CoRegisterInitializeSpy 함수(objbase.h)

IInitializeSpy 인터페이스의 구현을 등록합니다. 개발자가 COM 아파트에서 초기화 및 정리를 수행할 수 있도록 IInitializeSpy 인터페이스는 무시됩니다.

구문

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

매개 변수

[in] pSpy

IInitializeSpy 구현의 instance 대한 포인터입니다.

[out] puliCookie

이 등록을 식별하는 쿠키를 저장할 주소입니다.

반환 값

이 함수는 E_INVALIDARG 표준 반환 값과 다음 값을 반환할 수 있습니다.

반환 코드 Description
S_OK
개체가 성공적으로 등록되었습니다.
E_NOINTERFACE
개체는 IInitializeSpy를 지원하지 않습니다.

설명

CoRegisterInitializeSpy 함수는 CoInitializeEx(또는 CoInitialize) 또는 CoUninitialize가 호출될 때 호출할 메서드를 정의하는 IInitializeSpy 인터페이스의 구현을 등록합니다.

CoRegisterInitializeSpy는 pSpy 에서 IID_InitializeSpy QueryInterface 를 호출 합니다. 반환된 인터페이스 포인터의 주소를 이 스레드의 COM 초기화 상태와 무관한 스레드별 스토리지에 저장합니다. 성공하면 이 등록을 나타내는 ULARGE_INTEGER 쿠키를 puliCookie에 저장합니다. 이 쿠키를 CoRevokeInitializeSpy 에 전달하여 등록을 취소합니다.

IInitializeSpy 구현은 알림 메서드 내에서 CoInitializeEx 또는 CoUninitialize 를 호출하여 발생하는 중첩 문제를 처리해야 합니다. 이 스레드에서 등록이 발생한 후에만 알림이 발생합니다. 예를 들어 CoRegisterInitializeSpy 전에 CoInitializeEx가 호출되면 PreInitializePostInitialize 알림 메서드가 호출되지 않습니다.

알림 메서드는 예외를 throw하여 CoInitializeEx 또는 CoUninitialize 의 오류를 발생시키지 않아야 합니다. IInitializeSpy의 구현은 CoInitializeEx 또는 CoUninitialize를 호출하는 코드에 예외를 전파해서는 안 됩니다.

현재 CoInitializeEx 또는 CoUninitialize에 대한 최상위(중첩되지 않은) 호출 중에 IInitializeSpy 메서드 호출 내에서 CoRegisterInitializeSpy 호출이 유효한지 여부는 예측할 수 없습니다. 등록된 IInitializeSpy 구현은 CoInitializeEx 또는 CoUninitialize에 대한 향후 최상위 호출에 항상 적용됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 SP1이 설치된 Windows XP[데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 objbase.h
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

CoRevokeInitializeSpy

IInitializeSpy