IPrintCoreHelperPS::CreateInstanceOfMSXMLObject 方法 (prcomoem.h)

IPrintCoreHelperPS::CreateInstanceOfMSXMLObject 方法创建 MSXML 对象的实例。

语法

HRESULT CreateInstanceOfMSXMLObject(
  [in]  IN REFCLSID  rclsid,
  [in]  IN LPUNKNOWN pUnkOuter,
  [in]  IN DWORD     dwClsContext,
  [in]  IN REFIID    riid,
  [out] OUT LPVOID   *ppv
);

参数

[in] rclsid

与将用于创建对象的数据和代码关联的 CLSID。

[in] pUnkOuter

指向聚合对象的 IUnknown 接口(控制 IUnknown)的指针。 此参数必须 NULL,这意味着该对象不是作为聚合的一部分创建的。

[in] dwClsContext

管理新创建对象的代码将在其中运行的上下文。 唯一的有效值是 NULL 和 CLSCTX_INPROC_SERVER,这是 CLSCTX 枚举的值(Microsoft Windows SDK 文档中所述)。

[in] riid

对接口标识符的引用,该标识符将用于与对象通信。

[out] ppv

指向接收 riid 参数中请求的接口地址的内存地址的指针。 如果 IPrintCoreHelperPS::CreateInstanceOfMSXMLObject 成功返回,*ppv 包含所请求接口的地址。 如果此方法失败,*ppv 包含 NULL

返回值

IPrintCoreHelperPS::CreateInstanceOfMSXMLObject 应返回以下值之一。

返回代码 描述
S_OK
已成功创建指定对象类的实例。
CLASS_E_NOAGGREGATION
不能将指定的类创建为聚合的一部分。
E_NOINTERFACE
指定的类不实现请求的接口,或者控制 IUnknown 接口不公开请求的接口。
REGDB_E_CLASSNOTREG
指定的类未在注册数据库中注册。 此值还可以指示未注册 CLSCTX 枚举类型中请求的服务器类型,或者注册表中服务器类型的值已损坏。

言论

插件不应通过调用 CoCreateInstance(Windows SDK 文档中所述)直接创建 MSXML 对象。 相反,它应调用 Pscript 来执行此作。 原因是,在某些情况下,打印机驱动程序可以使用,例如与旧版作系统版本一样,作系统不需要注册当前为版本 6 的 MSXML 所需的版本。 在这种情况下,调用 CoCreateInstance 可能会失败。 但是,核心驱动程序可确保只要存在驱动程序,MSXML 分析器 DLL 也存在于计算机上,因此在需要时可以创建 MSXML 对象。

要求

要求 价值
目标平台 桌面
标头 prcomoem.h (include Prcomoem.h)