以下是 StgOpenStorage 函数的声明:
#include <coml2api.h>
HRESULT StgOpenStorage(
const WCHAR *pwcsName,
IStorage *pstgPriority,
DWORD grfMode,
SNB snbExclude,
DWORD reserved,
IStorage **ppstgOpen
);
- pwcsName: 存储对象的路径名。
- pstgPriority: 指向实现了 IStorage 接口的存储对象的指针,表示打开存储对象时的优先存储对象。可以为 nullptr。
- grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。
- snbExclude: 指向字符串名称块(String Name Block)的指针,用于指定在打开存储对象时要排除的子存储对象的名称。可以为 nullptr。
- reserved: 保留参数,必须设置为 0。
- ppstgOpen: 指向 IStorage 接口指针的指针,用于接收打开的存储对象的指针。
函数成功时返回 S_OK,并将打开的存储对象的指针存储在 ppstgOpen 中。该对象实现了 IStorage 接口,允许您对存储对象进行读取和写入操作。
以下是一个示例用法:
#include <coml2api.h>
void ExampleStgOpenStorage() {
IStorage *pStg = nullptr;
// Open an existing storage object
HRESULT hr = StgOpenStorage(
L"example.stg", // Storage name
nullptr, // Priority storage (can be nullptr)
STGM_READWRITE | STGM_SHARE_EXCLUSIVE, // Access mode
nullptr, // Exclude substorage names (can be nullptr)
0, // Reserved
&pStg // Pointer to storage object
);
if (SUCCEEDED(hr)) {
// Use the opened storage object (pStg) for further operations
// Release the storage object when done
pStg->Release();
}
}
请注意,在使用 StgOpenStorage 打开的存储对象完成操作后,应该调用 Release 方法释放对象。
转载请注明出处:http://www.zyzy.cn/article/detail/24621/Win32 API/Coml2api.h/StgOpenStorage