CoRegisterInitializeSpy 함수(objbase.h)
IInitializeSpy 인터페이스의 구현을 등록합니다. 개발자가 COM 아파트에서 초기화 및 정리를 수행할 수 있도록 IInitializeSpy 인터페이스는 무시됩니다.
구문
HRESULT CoRegisterInitializeSpy(
[in] IInitializeSpy *pSpy,
[out] ULARGE_INTEGER *puliCookie
);
매개 변수
[in] pSpy
IInitializeSpy 구현의 instance 대한 포인터입니다.
[out] puliCookie
이 등록을 식별하는 쿠키를 저장할 주소입니다.
반환 값
이 함수는 E_INVALIDARG 표준 반환 값과 다음 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
개체가 성공적으로 등록되었습니다. |
|
개체는 IInitializeSpy를 지원하지 않습니다. |
설명
CoRegisterInitializeSpy 함수는 CoInitializeEx(또는 CoInitialize) 또는 CoUninitialize가 호출될 때 호출할 메서드를 정의하는 IInitializeSpy 인터페이스의 구현을 등록합니다.
CoRegisterInitializeSpy는 pSpy 에서 IID_InitializeSpy QueryInterface 를 호출 합니다. 반환된 인터페이스 포인터의 주소를 이 스레드의 COM 초기화 상태와 무관한 스레드별 스토리지에 저장합니다. 성공하면 이 등록을 나타내는 ULARGE_INTEGER 쿠키를 puliCookie에 저장합니다. 이 쿠키를 CoRevokeInitializeSpy 에 전달하여 등록을 취소합니다.
IInitializeSpy 구현은 알림 메서드 내에서 CoInitializeEx 또는 CoUninitialize 를 호출하여 발생하는 중첩 문제를 처리해야 합니다. 이 스레드에서 등록이 발생한 후에만 알림이 발생합니다. 예를 들어 CoRegisterInitializeSpy 전에 CoInitializeEx가 호출되면 PreInitialize 및 PostInitialize 알림 메서드가 호출되지 않습니다.
알림 메서드는 예외를 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 |