Registrazione per gli eventi del terminale pluggable
Il processo di registrazione eventi viene eseguito quando il terminale viene selezionato da un flusso. Nell'implementazione dell'applicazione terminale del metodo SelectTerminal è possibile usare l'interfaccia ITTerminal del terminale collegata al flusso e chiamare QueryInterface per trovare ITPluggableTerminalEventSinkRegistration.
HRESULT hr = E_FAIL;
ITPluggableTerminalEventSinkRegistration* pEventRegistration = NULL;
hr = pTerminal->QueryInterface(
IID_ITPluggableTerminalEventSinkRegistration,
(void**)& pEventRegistration
);
Se la chiamata QueryInterface ha esito positivo, è possibile chiamare il metodo RegisterSink . A questo scopo, è necessario creare un oggetto che implementa l'interfaccia ITPluggableTerminalEventSink . Questa interfaccia viene passata come parametro del metodo RegisterSink .
ITPluggableTerminalEventSink* pEventSink;
HRESULT hr = CreateEventSink( &pEventSink);
// If (hr != S_OK) process the error here.
hr = pEventRegistration->RegisterSink( pEventSink );
// If (hr != S_OK) process the error here.
Il terminale che implementa la chiamata ITPluggableTerminalEventSinkRegistration archivierà l'interfaccia. Il puntatore verrà usato quando il terminale attiverà un evento.
È possibile annullare la registrazione del sink di eventi usando UnregisterSink.
hr = pEventRegistration->UnregisterSink();
// If (hr != S_OK) process the error here.