注册 IInitializeSpy 接口的实现。 定义 IInitializeSpy 接口以允许开发人员在 COM 单元上执行初始化和清理。
Syntax
HRESULT CoRegisterInitializeSpy(
[in] IInitializeSpy *pSpy,
[out] ULARGE_INTEGER *puliCookie
);
参数
[in] pSpy
指向 IInitializeSpy 实现实例的指针。
[out] puliCookie
用于存储标识此注册的 Cookie 的地址。
返回值
此函数可以返回标准返回值E_INVALIDARG,以及以下值。
| 返回代码 | Description |
|---|---|
|
已成功注册对象。 |
|
对象不支持 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 或 CoUninitializeEx 的当前顶级(非嵌套)调用期间,从 IInitializeSpy 方法调用中调用 CoRegisterInitializeSpy 是否有效是不可预测的。 对于将来对 CoInitializeEx 或 CoUninitialize 的顶级调用,IInitializeSpy 的注册实现将始终有效。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | 具有 SP1 的 Windows XP [仅限桌面应用] |
| 支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | objbase.h |
| Library | Ole32.lib |
| DLL | Ole32.dll |