Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Регистрирует реализацию интерфейса IInitializeSpy . Интерфейс IInitializeSpy определяется, чтобы разработчики могли выполнять инициализацию и очистку в com-квартирах.
Синтаксис
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 для 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 |