CoRegisterInitializeSpy-Funktion (objbase.h)

Registriert eine Implementierung der IInitializeSpy-Schnittstelle . Die IInitializeSpy-Schnittstelle ist so eingerichtet, dass Entwickler die Initialisierung und Bereinigung von COM-Apartments durchführen können.

Syntax

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

Parameter

[in] pSpy

Ein Zeiger auf eine instance der IInitializeSpy-Implementierung.

[out] puliCookie

Die Adresse, an der ein Cookie gespeichert werden soll, das diese Registrierung identifiziert.

Rückgabewert

Diese Funktion kann den Standardrückgabewert E_INVALIDARG sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Das Objekt wurde erfolgreich registriert.
E_NOINTERFACE
Das -Objekt unterstützt IInitializeSpy nicht.

Hinweise

Die CoRegisterInitializeSpy-Funktion registriert eine Implementierung der IInitializeSpy-Schnittstelle , die Methoden definiert, die aufgerufen werden sollen, wenn CoInitializeEx (oder CoInitialize) oder CoUninitialize aufgerufen wird.

CoRegisterInitializeSpy ruft QueryInterface für IID_InitializeSpy auf pSpy auf. Die Adresse des zurückgegebenen Schnittstellenzeigers wird in threadspezifischem Speicher gespeichert, der vom COM-Initialisierungsstatus für diesen Thread unabhängig ist. Bei Erfolg speichert es in puliCookie ein ULARGE_INTEGER Cookie, das diese Registrierung darstellt. Übergeben Sie dieses Cookie an CoRevokeInitializeSpy , um die Registrierung zu widerrufen.

IInitializeSpy-Implementierungen müssen Schachtelungsprobleme behandeln, die durch den Aufruf von CoInitializeEx oder CoUninitialize innerhalb einer Benachrichtigungsmethode verursacht werden. Benachrichtigungen erfolgen erst, nachdem die Registrierung in diesem Thread erfolgt. Wenn z. B . CoInitializeEx vor CoRegisterInitializeSpy aufgerufen wird, werden die Benachrichtigungsmethoden PreInitialize und PostInitialize nicht aufgerufen.

Benachrichtigungsmethoden dürfen nicht den Fehler von CoInitializeEx oder CoUninitialize verursachen, indem Sie Ausnahmen auslösen. Implementierungen von IInitializeSpy dürfen Ausnahmen nicht an Code weitergeben, der CoInitializeEx oder CoUninitialize aufruft.

Es ist unvorhersehbar, ob ein Aufruf von CoRegisterInitializeSpy aus einem IInitializeSpy-Methodenaufruf während des aktuellen Aufrufs der obersten Ebene (nicht geschachtelt) von CoInitializeEx oder CoUninitialize wirksam wird. Eine registrierte Implementierung von IInitializeSpy wird immer für zukünftige Aufrufe der obersten Ebene von CoInitializeEx oder CoUninitialize wirksam sein.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP mit SP1 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objbase.h
Bibliothek Ole32.lib
DLL Ole32.dll

Weitere Informationen

CoRevokeInitializeSpy

IInitializeSpy