Compartilhar via


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.