Поделиться через


Функция CoRegisterInitializeSpy (objbase.h)

Регистрирует реализацию интерфейса IInitializeSpy . Интерфейс IInitializeSpy определяется, чтобы разработчики могли выполнять инициализацию и очистку в com-квартирах.

Синтаксис

HRESULT CoRegisterInitializeSpy(
  [in]  IInitializeSpy *pSpy,
  [out] ULARGE_INTEGER *puliCookie
);

Параметры

[in] pSpy

Указатель на экземпляр реализации IInitializeSpy .

[out] puliCookie

Адрес, в котором хранится файл cookie, определяющий эту регистрацию.

Возвращаемое значение

Эта функция может возвращать стандартное возвращаемое значение E_INVALIDARG, а также следующие значения.

Код возврата Description
S_OK
Объект успешно зарегистрирован.
E_NOINTERFACE
Объект не поддерживает IInitializeSpy.

Замечания

Функция CoRegisterInitializeSpy регистрирует реализацию интерфейса IInitializeSpy , который определяет методы для вызова при вызове CoInitializeEx (или CoInitialize) или CoUninitialize .

CoRegisterInitializeSpy вызывает QueryInterface для IID_InitializeSpy pSpy. Он сохраняет адрес возвращаемого указателя интерфейса в хранилище, зависящее от состояния инициализации COM для этого потока. При успешном выполнении он хранит в puliCookieфайл cookie ULARGE_INTEGER , представляющий эту регистрацию. Передайте этот файл cookie в CoRevokeInitializeSpy , чтобы отозвать регистрацию.

Реализации IInitializeSpy должны иметь дело с вложенными проблемами, вызванными вызовом CoInitializeEx или CoUninitialize из метода уведомлений. Уведомления происходят только после регистрации в этом потоке. Например, если CoInitializeEx вызывается до CoRegisterInitializeSpy, методы уведомлений PreInitialize и PostInitialize не будут вызываться.

Методы уведомлений не должны вызывать сбой CoInitializeEx или CoUninitialize путем вызова исключений. Реализации IInitializeSpy не должны распространять исключения в код, вызывающий CoInitializeEx или CoUninitialize.

Непредсказуемо, будет ли вызов метода CoRegisterInitializeSpy из вызова метода IInitializeSpy эффективным во время текущего вызова верхнего уровня (не вложенного) вызова CoInitializeEx или CoUninitialize. Зарегистрированная реализация IInitializeSpy всегда будет эффективной для будущих вызовов верхнего уровня к CoInitializeEx или CoUninitialize.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows XP с пакетом обновления 1 (SP1) [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Windows
Header objbase.h
Library Ole32.lib
DLL Ole32.dll

См. также

CoRevokeInitializeSpy

IInitializeSpy