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 |
---|---|
|
Das Objekt wurde erfolgreich registriert. |
|
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für