Registrando-se para eventos de terminal conectáveis
O processo de registro de evento ocorre quando o terminal é selecionado por um fluxo. Na implementação do aplicativo terminal do método SelectTerminal , podemos usar a interface ITTerminal do terminal que foi anexado ao fluxo e chamar QueryInterface para localizar ITPluggableTerminalEventSinkRegistration.
HRESULT hr = E_FAIL;
ITPluggableTerminalEventSinkRegistration* pEventRegistration = NULL;
hr = pTerminal->QueryInterface(
IID_ITPluggableTerminalEventSinkRegistration,
(void**)& pEventRegistration
);
Se a chamada QueryInterface for bem-sucedida, poderemos chamar o método RegisterSink . Para essa finalidade, devemos criar um objeto que implemente a interface ITPluggableTerminalEventSink . Passamos essa interface como um parâmetro do 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.
O terminal que implementa a chamada ITPluggableTerminalEventSinkRegistration armazenará a interface. O ponteiro será usado quando o terminal disparar um evento.
O coletor de eventos pode ser cancelado usando UnregisterSink.
hr = pEventRegistration->UnregisterSink();
// If (hr != S_OK) process the error here.