IPropertySetStorage::Create 方法 (propidl.h)

Create 方法创建并打开属性集存储对象中的新属性集。

语法

HRESULT Create(
  [in]  REFFMTID         rfmtid,
  [in]  const CLSID      *pclsid,
  [in]  DWORD            grfFlags,
  [in]  DWORD            grfMode,
  [out] IPropertyStorage **ppprstg
);

参数

[in] rfmtid

要创建的属性集的 FMTID。 有关平台 SDK 中已知且预定义的 FMTID 的信息,请参阅 预定义的属性集格式标识符

[in] pclsid

指向此属性集的初始类标识符 CLSID 的指针。 可以为 NULL,在这种情况下,它设置为所有零。 CLSID 是类的 CLSID,用于显示和/或提供对属性值的编程访问。 如果没有此类,建议使用 FMTID。

[in] grfFlags

PROPSETFLAG 常量中的值。

[in] grfMode

打开新创建的属性集的访问模式,取自 STGM_Constants的某些值,如以下“备注”部分所述。

[out] ppprstg

指向接收 IPropertyStorage 接口指针的输出变量的指针。

返回值

此方法支持标准返回值E_UNEXPECTED以及以下内容:

注解

IPropertySetStorage::Create 创建并打开一个新的属性集子对象, (支持此属性集存储对象中包含的 IPropertyStorage 接口) 。 属性集自动包含代码页和区域设置 ID 属性。 它们分别设置为 Unicode 和当前用户默认值。

grfFlags 参数是取自 PROPSETFLAG 常量的值的组合。 如果使用此枚举中的PROPSETFLAG_ANSI值,则代码页将设置为当前系统默认值,而不是 Unicode。

grfMode 参数指定打开新创建的集的访问模式。 此参数的值与 IPropertySetStorage::OpengrfMode 参数中的值相同,并添加了下表中列出的值。

含义
STGM_FAILIFTHERE 如果存在另一个具有指定 fmtid 参数的属性集,则调用将失败。 这是默认操作;即,除非指定STGM_CREATE,否则STGM_FAILIFTHERE是默示的。
STGM_CREATE 如果已存在使用指定 fmtid 参数设置的另一个属性,则会将其删除并替换为此新属性。
 

默认情况下,创建的属性集很简单,但调用方可以通过在 grfFlags 参数中指定 PROPSETFLAG_NONSIMPLE 值来请求非简单属性集。 有关简单和非简单属性集的详细信息,请参阅属性集的存储和Stream对象

此方法受简单属性集的基础 IStorage::CreateStream (的约束) 或 IStorage::CreateStorage () 非简单属性集的约束。 例如,使用 IPropertySetStorage-Compound 文件实现时,请将 grfMode 参数中的STGM_SHARE_EXCLUSIVE指定为 IPropertySetStorage::Create。 相反,如果使用 IPropertySetStorage-独立实现则 IPropertySetStorage::Create 受应用于调用方指定的 IStorage 的约束。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 propidl.h (包括 Objbase.h)
Library Uuid.lib
DLL Ole32.dll

另请参阅

IPropertySetStorage

IPropertySetStorage::Open

PROPSETFLAG 常量

示例

StgCreatePropSetStg 示例

WriteRead 示例