Condividi tramite


Funzione CoRegisterInitializeSpy (objbase.h)

Registra un'implementazione dell'interfaccia IInitializeSpy . L'interfaccia IInitializeSpy viene defisata per consentire agli sviluppatori di eseguire inizializzazione e pulizia negli appartamenti COM.

Sintassi

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

Parametri

[in] pSpy

Puntatore a un'istanza dell'implementazione IInitializeSpy .

[out] puliCookie

Indirizzo in cui archiviare un cookie che identifica questa registrazione.

Valore restituito

Questa funzione può restituire il valore restituito standard E_INVALIDARG, nonché i valori seguenti.

Codice restituito Descrizione
S_OK
L'oggetto è stato registrato correttamente.
E_NOINTERFACE
L'oggetto non supporta IInitializeSpy.

Commenti

La funzione CoRegisterInitializeSpy registra un'implementazione dell'interfaccia IInitializeSpy , che definisce i metodi da chiamare quando viene richiamato CoInitializeEx (o CoInitialize) o CoUninitialize .

CoRegisterInitializeSpy chiama QueryInterface per IID_InitializeSpy in pSpy. Archivia l'indirizzo del puntatore dell'interfaccia restituito nell'archiviazione specifica del thread indipendente dallo stato di inizializzazione COM per questo thread. Al successo, archivia in puliCookie un cookie ULARGE_INTEGER che rappresenta questa registrazione. Passare questo cookie a CoRevokeInitializeSpy per revocare la registrazione.

Le implementazioni IInitializeSpy devono gestire i problemi di annidamento causati dalla chiamata a CoInitializeEx o CoUninitialize dall'interno di un metodo di notifica. Le notifiche si verificano solo dopo l'esecuzione della registrazione in questo thread. Ad esempio, se CoInitializeEx viene chiamato prima di CoRegisterInitializeSpy, i metodi di notifica PreInitialize e PostInitialize non verranno chiamati.

I metodi di notifica non devono causare l'errore di CoInitializeEx o CoUninitialize generando eccezioni. Le implementazioni di IInitializeSpy non devono propagare eccezioni al codice che chiama CoInitializeEx o CoUninitialize.

È imprevedibile se una chiamata a CoRegisterInitializeSpy dall'interno di una chiamata al metodo IInitializeSpy sarà effettiva durante la chiamata di primo livello corrente (non nidificata) a CoInitializeEx o CoUninitialize. Un'implementazione registrata di IInitializeSpy sarà sempre efficace per le chiamate di primo livello future a CoInitializeEx o CoUninitialize.

Requisiti

Requisito Valore
Client minimo supportato Windows XP con SP1 [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objbase.h
Libreria Ole32.lib
DLL Ole32.dll

Vedi anche

CoRevokeInitializeSpy

IInitializeSpy