Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1994.
//
// File: asyncapi.cxx
//
// Contents: APIs for async docfiles
//
// Classes:
//
// Functions:
//
// History: 19-Dec-95 PhilipLa Created
//
//----------------------------------------------------------------------------
#include "astghead.cxx"
#pragma hdrstop
#include "asyncapi.hxx"
#include "filllkb.hxx"
#include "filelkb.hxx"
#include "stgwrap.hxx"
#if DBG == 1
DECLARE_INFOLEVEL(astg); #endif
HRESULT StgOpenAsyncDocfileOnIFillLockBytes( IFillLockBytes *pflb, DWORD grfMode, DWORD asyncFlags, IStorage **ppstgOpen) { HRESULT hr; ILockBytes *pilb; IStorage *pstg;
hr = pflb->QueryInterface(IID_ILockBytes, (void **)&pilb); if (FAILED(hr)) { return hr; } hr = StgOpenStorageOnILockBytes(pilb, NULL, grfMode, NULL, 0, &pstg);
pilb->Release(); if (FAILED(hr)) { return hr; }
*ppstgOpen = new CAsyncRootStorage(pstg,(CFillLockBytes *) pflb); if (*ppstgOpen == NULL) { return STG_E_INSUFFICIENTMEMORY; } return NOERROR; }
HRESULT StgGetIFillLockBytesOnILockBytes( ILockBytes *pilb, IFillLockBytes **ppflb) { SCODE sc = S_OK; CFillLockBytes *pflb = NULL; pflb = new CFillLockBytes(pilb); if (pflb == NULL) { return STG_E_INSUFFICIENTMEMORY; } sc = pflb->Init(); if (FAILED(sc)) { *ppflb = NULL; return sc; } *ppflb = pflb; return NOERROR; }
HRESULT StgGetIFillLockBytesOnFile(OLECHAR const *pwcsName, IFillLockBytes **ppflb) { SCODE sc; CFileLockBytes *pflb = NULL; pflb = new CFileLockBytes; if (pflb == NULL) { return STG_E_INSUFFICIENTMEMORY; } sc = pflb->Init(pwcsName); if (SUCCEEDED(sc)) { sc = StgGetIFillLockBytesOnILockBytes(pflb, ppflb); } return sc; }
#if DBG == 1
HRESULT StgGetDebugFileLockBytes(OLECHAR const *pwcsName, ILockBytes **ppilb) { SCODE sc; CFileLockBytes *pflb; *ppilb = NULL; pflb = new CFileLockBytes; if (pflb == NULL) { return STG_E_INSUFFICIENTMEMORY; }
sc = pflb->Init(pwcsName); if (FAILED(sc)) { delete pflb; pflb = NULL; } *ppilb = pflb; return sc; } #endif
|