Uso degli oggetti callback

Sono disponibili tre interfacce COM di callback usate dal motore: IDebugEventCallbacks per notificare le estensioni e le applicazioni del debugger al motore o alla destinazione, IDebugInputCallback per la richiesta di input e IDebugOutputCallback per l'invio di output.

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

Quando viene creato un client, il motore ricorda il thread in cui è stato creato. Il motore usa questo stesso thread ogni volta che esegue una chiamata a un'istanza di callback registrata con il client. Se il thread è in uso, il motore accoderà le chiamate necessarie. Per consentire al motore di effettuare queste chiamate, il metodo DispatchCallbacks deve essere chiamato ogni volta che il thread di un client è inattivo. 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 DispatchCallbacks non deve essere chiamato.

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 è disponibile usando GetEventCallbacks. Il numero di callback di eventi registrati in tutti i client è disponibile usando GetNumberEventCallbacks.

Per informazioni dettagliate sul modo in cui il motore gestisce gli eventi, vedere Monitoraggio degli eventi.

Oggetti callback di input

L'interfaccia IDebugInputCallbacks viene usata dal motore per richiedere l'input da estensioni e 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 è disponibile usando GetNumberInputCallbacks.

Per informazioni dettagliate sul modo in cui 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 è disponibile usando GetNumberOutputCallbacks.

Per informazioni dettagliate sul modo in cui il motore gestisce l'output, vedere Input e Output.

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