StgOpenPropStg 是 Win32 API 中 coml2api.h 头文件定义的一个函数,用于打开或创建存储对象的属性集合。

以下是 StgOpenPropStg 函数的声明:
#include <coml2api.h>

HRESULT StgOpenPropStg(
  const WCHAR          *pwcsName,
  IStorage             *pstgPriority,
  DWORD                grfMode,
  REFFMTID             fmtid,
  IPropertySetStorage **ppPropSetStg
);

  •  pwcsName: 存储对象的路径名。

  
  •  pstgPriority: 指向实现了 IStorage 接口的存储对象的指针,表示打开或创建属性集合时的优先存储对象。可以为 nullptr。

  
  •  grfMode: 存储对象的打开模式,可以是 STGM_DIRECT、STGM_TRANSACTED 等之一,指定存储对象的访问模式。

  
  •  fmtid: 属性集合的格式标识符(FMTID)。

  
  •  ppPropSetStg: 指向 IPropertySetStorage 接口指针的指针,用于接收打开或创建的属性集合存储对象的指针。


函数成功时返回 S_OK,并将打开或创建的属性集合存储对象的指针存储在 ppPropSetStg 中。该对象实现了 IPropertySetStorage 接口,允许您对指定格式标识符的属性集合进行操作。

以下是一个示例用法:
#include <coml2api.h>

void ExampleStgOpenPropStg() {
    IPropertySetStorage *pPropSetStg = nullptr;

    // Open or create a property set storage for a specific FMTID
    HRESULT hr = StgOpenPropStg(
        L"example.stg",         // Storage name
        nullptr,                // Priority storage (can be nullptr)
        STGM_READWRITE | STGM_SHARE_EXCLUSIVE, // Access mode
        FMTID_SummaryInformation, // FMTID of the property set
        &pPropSetStg            // Pointer to property set storage object
    );

    if (SUCCEEDED(hr)) {
        // Use the opened or created property set storage object (pPropSetStg) for further operations

        // Release the property set storage object when done
        pPropSetStg->Release();
    }
}

请注意,在使用 StgOpenPropStg 打开或创建的属性集合存储对象完成操作后,应该调用 Release 方法释放对象。


转载请注明出处:http://www.zyzy.cn/article/detail/24620/Win32 API/Coml2api.h/StgOpenPropStg