static HRESULT create_storage(IStorage **stg) { HRESULT hr; ILockBytes *lock_bytes; hr = CreateILockBytesOnHGlobal(NULL, TRUE, &lock_bytes); if(SUCCEEDED(hr)) { hr = StgCreateDocfileOnILockBytes(lock_bytes, STGM_CREATE | STGM_SHARE_EXCLUSIVE | STGM_READWRITE, 0, stg); ILockBytes_Release(lock_bytes); } return hr; }
/****************************************************************************** * BIGBLOCKFILE_Destructor * * Destructor. Clean up, free memory. */ void BIGBLOCKFILE_Destructor( LPBIGBLOCKFILE This) { BIGBLOCKFILE_FreeAllMappedPages(This); if (This->fileBased) { CloseHandle(This->hfilemap); CloseHandle(This->hfile); } else { GlobalUnlock(This->hbytearray); ILockBytes_Release(This->pLkbyt); } /* destroy this */ HeapFree(GetProcessHeap(), 0, This); }