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 |
---|---|
|
L'oggetto è stato registrato correttamente. |
|
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 |