Registro de eventos de terminal conectables
El proceso de registro de eventos tiene lugar cuando un flujo selecciona el terminal. En la implementación de la aplicación de terminal del método SelectTerminal , podemos usar la interfaz ITTerminal del terminal que se adjuntó a la secuencia y llamar a QueryInterface para buscar ITPluggableTerminalEventSinkRegistration.
HRESULT hr = E_FAIL;
ITPluggableTerminalEventSinkRegistration* pEventRegistration = NULL;
hr = pTerminal->QueryInterface(
IID_ITPluggableTerminalEventSinkRegistration,
(void**)& pEventRegistration
);
Si la llamada a QueryInterface se realiza correctamente, podemos llamar al método RegisterSink . Para ello, debemos crear un objeto que implemente la interfaz ITPluggableTerminalEventSink . Pasamos esta interfaz como parámetro del método 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.
El terminal que implementa la llamada ITPluggableTerminalEventSinkRegistration almacenará la interfaz. El puntero se usará cuando el terminal active un evento.
El receptor de eventos se puede anular el registro mediante UnregisterSink.
hr = pEventRegistration->UnregisterSink();
// If (hr != S_OK) process the error here.