Registrieren für austauschbare Terminalereignisse
Der Ereignisregistrierungsprozess findet statt, wenn das Terminal von einem Stream ausgewählt wird. In der Implementierung der SelectTerminal-Methode der Terminalanwendung können wir die ITTerminal-Schnittstelle des Terminals verwenden, das an den Stream angefügt wurde, und QueryInterface aufrufen, um ITPluggableTerminalEventSinkRegistration zu suchen.
HRESULT hr = E_FAIL;
ITPluggableTerminalEventSinkRegistration* pEventRegistration = NULL;
hr = pTerminal->QueryInterface(
IID_ITPluggableTerminalEventSinkRegistration,
(void**)& pEventRegistration
);
Wenn der QueryInterface-Aufruf erfolgreich ist, können wir die RegisterSink-Methode aufrufen. Zu diesem Zweck sollten wir ein -Objekt erstellen, das die ITPluggableTerminalEventSink-Schnittstelle implementiert. Wir übergeben diese Schnittstelle als Parameter der RegisterSink-Methode .
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.
Das Terminal, das den AUFRUF ITPluggableTerminalEventSinkRegistration implementiert, speichert die Schnittstelle. Der Zeiger wird verwendet, wenn das Terminal ein Ereignis auslöst.
Die Ereignissenke kann mit UnregisterSink nicht registriert werden.
hr = pEventRegistration->UnregisterSink();
// If (hr != S_OK) process the error here.