Freigeben über


CoRegisterInitializeSpy-Funktion (objbase.h)

Registriert eine Implementierung der IInitializeSpy-Schnittstelle . Die IInitializeSpy-Schnittstelle ist definiert, damit Entwickler Initialisierung und Bereinigung auf COM-Wohnungen durchführen können.

Syntax

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

Die Parameter

[in] pSpy

Ein Zeiger auf eine Instanz 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ücklaufwert E_INVALIDARG sowie die folgenden Werte zurückgeben.

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

Bemerkungen

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. Sie speichert die Adresse des zurückgegebenen Schnittstellenzeigers im threadspezifischen Speicher, der unabhängig vom COM-Initialisierungszustand für diesen Thread 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 mit Schachtelungsproblemen umgehen, die durch Aufrufen von CoInitializeEx oder CoUninitialize innerhalb einer Benachrichtigungsmethode verursacht werden. Benachrichtigungen treten erst nach der Registrierung in diesem Thread auf. Wenn CoInitializeEx beispielsweise vor CoRegisterInitializeSpy aufgerufen wird, werden die Benachrichtigungsmethoden "PreInitialize" und "PostInitialize" nicht aufgerufen.

Benachrichtigungsmethoden dürfen den Fehler von CoInitializeEx oder CoUninitialize nicht verursachen, indem Ausnahmen ausgelöst werden. Implementierungen von IInitializeSpy dürfen keine Ausnahmen an Code weitergeben, der CoInitializeEx oder CoUninitialize aufruft.

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

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows XP mit SP1 [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2003 [Nur Desktop-Apps]
Zielplattform Fenster
Header objbase.h
Library Ole32.lib
DLL Ole32.dll

Siehe auch

CoRevokeInitializeSpy

IInitializeSpy