StgCreateStorageEx 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于创建或打开存储对象,支持更多的选项。

以下是 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