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 应返回以下值之一。
| 返回代码 | 描述 |
|---|---|
|
已成功创建指定对象类的实例。 |
|
不能将指定的类创建为聚合的一部分。 |
|
指定的类不实现请求的接口,或者控制 IUnknown 接口不公开请求的接口。 |
|
指定的类未在注册数据库中注册。 此值还可以指示未注册 CLSCTX 枚举类型中请求的服务器类型,或者注册表中服务器类型的值已损坏。 |
言论
插件不应通过调用 CoCreateInstance(Windows SDK 文档中所述)直接创建 MSXML 对象。 相反,它应调用 Pscript 来执行此作。 原因是,在某些情况下,打印机驱动程序可以使用,例如与旧版作系统版本一样,作系统不需要注册当前为版本 6 的 MSXML 所需的版本。 在这种情况下,调用 CoCreateInstance 可能会失败。 但是,核心驱动程序可确保只要存在驱动程序,MSXML 分析器 DLL 也存在于计算机上,因此在需要时可以创建 MSXML 对象。
要求
| 要求 | 价值 |
|---|---|
| 目标平台 | 桌面 |
| 标头 | prcomoem.h (include Prcomoem.h) |