Condividi tramite


Uso di oggetti callback

Esistono tre callback COM come interfacce usate dal motore: IDebugEventCallbacks per notificare le estensioni del debugger e le applicazioni delle modifiche apportate al motore o alla destinazione, IDebugInputCallbacks per la richiesta di input e IDebugOutputCallbacks per l'invio dell'output.

Gli oggetti di callback vengono registrati con i client. Al massimo, un'istanza di ognuna delle tre interfacce di callback può essere registrata con ogni client (le versioni Unicode e ASCII di un conteggio di interfacce come la stessa interfaccia).

Quando viene creato un client, il motore memorizza il thread in cui è stato creato. Il motore usa lo stesso thread ogni volta che effettua una chiamata a un'istanza di callback registrata con il client. Se il thread è in uso, il motore accoderà le chiamate che deve effettuare. Per consentire al motore di effettuare queste chiamate, il metodo DispatchCallbacks deve essere chiamato ogni volta che il thread di un client è inattiva. Il metodo ExitDispatch causerà la restituzione di DispatchCallbacks . Se il thread è lo stesso thread usato per avviare la sessione del debugger, il motore può effettuare le chiamate di callback durante il metodo WaitForEvent e Non è necessario chiamare DispatchCallbacks .

Il metodo FlushCallbacks indica al motore di inviare tutti gli output memorizzati nel buffer ai callback di output.

Oggetti callback eventi

L'interfaccia IDebugEventCallbacks viene usata dal motore per notificare le estensioni e le applicazioni del debugger di eventi e modifiche al motore e alla destinazione. Un'implementazione di IDebugEventCallbacks può essere registrata con un client usando SetEventCallbacks. L'implementazione corrente registrata con un client è reperibile usando GetEventCallbacks. Il numero di callback di eventi registrati in tutti i client è reperibile usando GetNumberEventCallbacks.

Per informazioni dettagliate su come il motore gestisce gli eventi, vedere Monitoraggio degli eventi.

Oggetti callback di input

L'interfaccia IDebugInputCallbacks viene usata dal motore per richiedere l'input dalle estensioni e dalle applicazioni del debugger. Un'implementazione di IDebugInputCallbacks può essere registrata con un client usando SetInputCallbacks. L'implementazione corrente registrata con un client è disponibile usando GetInputCallbacks. Il numero di callback di input registrati in tutti i client è reperibile usando GetNumberInputCallbacks.

Per informazioni dettagliate su come il motore gestisce l'input, vedere Input e output.

Oggetti callback di output

L'interfaccia IDebugOutputCallbacks viene usata dal motore per inviare l'output alle estensioni e alle applicazioni del debugger. Un'implementazione di IDebugOutputCallbacks può essere registrata con un client usando SetOutputCallbacks. L'implementazione corrente registrata con un client è disponibile usando GetOutputCallbacks. Il numero di callback di output registrati in tutti i client è reperibile usando GetNumberOutputCallbacks.

Per informazioni dettagliate su come il motore gestisce l'output, vedere Input e output.

Nota Come è tipico per gli oggetti COM, il motore chiamerà IUnknown::AddRef su un oggetto COM di callback quando viene registrato con un client e IUnknown::Release quando l'oggetto viene sostituito o il client viene eliminato.