CoRegisterInitializeSpy 函数 (objbase.h)
注册 IInitializeSpy 接口的实现。 IInitializeSpy 接口不允许开发人员在 COM 单元上执行初始化和清理。
语法
HRESULT CoRegisterInitializeSpy(
[in] IInitializeSpy *pSpy,
[out] ULARGE_INTEGER *puliCookie
);
参数
[in] pSpy
指向 IInitializeSpy 实现实例的指针。
[out] puliCookie
用于存储标识此注册的 Cookie 的地址。
返回值
此函数可以返回E_INVALIDARG的标准返回值,以及以下值。
返回代码 | 说明 |
---|---|
|
已成功注册对象。 |
|
对象不支持 IInitializeSpy。 |
注解
CoRegisterInitializeSpy 函数注册 IInitializeSpy 接口的实现,该接口定义在调用 CoInitializeEx (或 CoInitialize) 或 CoUninitialize 时要调用的方法。
CoRegisterInitializeSpy 调用 QueryInterface 以在 pSpy 上IID_InitializeSpy。 它将返回的接口指针的地址存储在线程特定的存储中,该存储独立于此线程的 COM 初始化状态。 成功后,它会在 puliCookie 中存储表示此注册 的ULARGE_INTEGER Cookie。 将此 Cookie 传递给 CoRevokeInitializeSpy 以撤销注册。
IInitializeSpy 实现必须处理由于从通知方法中调用 CoInitializeEx 或 CoUninitialize 而导致的嵌套问题。 仅在此线程上发生注册后,才会发出通知。 例如,如果在 CoRegisterInitializeSpy 之前调用 CoInitializeEx,则不会调用 PreInitialize 和 PostInitialize 通知方法。
通知方法不得通过引发异常导致 CoInitializeEx 或 CoUninitialize 失败。 IInitializeSpy 的实现不得将异常传播到调用 CoInitializeEx 或 CoUninitialize 的代码。
在当前顶级 (非嵌套) 调用 CoInitializeEx 或 CoUninitialize 期间,从 IInitializeSpy 方法调用内部调用 CoRegisterInitializeSpy 是无法预测的。 IInitializeSpy 的注册实现对于将来对 CoInitializeEx 或 CoUninitialize 的顶级调用始终有效。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 具有 SP1 的 Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | objbase.h |
Library | Ole32.lib |
DLL | Ole32.dll |