以下是 StgCreateStorageEx 函数的声明:
#include <coml2api.h>
HRESULT StgCreateStorageEx(
const WCHAR *pwcsName,
DWORD grfMode,
DWORD stgfmt,
DWORD grfAttrs,
STGOPTIONS *pStgOptions,
PSECURITY_DESCRIPTOR pSecurityDescriptor,
REFIID riid,
void **ppObjectOpen
);
- pwcsName: 存储对象的路径名。
- grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。
- stgfmt: 指定存储对象的格式,可以是 STGFMT_STORAGE、STGFMT_FILE 等之一。
- grfAttrs: 存储对象的属性,可以是 STGM_CREATE、STGM_CONVERT 等之一。
- pStgOptions: 指向 STGOPTIONS 结构的指针,用于设置存储对象的选项,可以为 nullptr。
- pSecurityDescriptor: 指向安全描述符的指针,用于设置存储对象的安全性,可以为 nullptr。
- riid: 用于请求的接口的标识符。
- ppObjectOpen: 指向接收存储对象指针的指针。
函数成功时返回 S_OK,并将创建或打开的存储对象的指针存储在 ppObjectOpen 中。这个函数支持更多的选项,例如设置存储对象的格式、属性、选项和安全性等。
以下是一个示例用法:
#include <coml2api.h>
void ExampleStgCreateStorageEx() {
IStorage *pStg = nullptr;
// Create or open a storage object with additional options
HRESULT hr = StgCreateStorageEx(
L"example.stg", // Storage name
STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, // Access mode
STGFMT_STORAGE, // Storage format
0, // Attributes
nullptr, // STGOPTIONS
nullptr, // Security descriptor
IID_IStorage, // Requested interface
(void**)&pStg // Pointer to storage object
);
if (SUCCEEDED(hr)) {
// Use the created or opened storage object (pStg) for further operations
// Release the storage object when done
pStg->Release();
}
}
请注意,在使用 StgCreateStorageEx 创建或打开的存储对象完成操作后,应该调用 Release 方法释放对象。
转载请注明出处:http://www.zyzy.cn/article/detail/24618/Win32 API/Coml2api.h/StgCreateStorageEx