イベント登録プロセスは、ターミナルがストリームによって選択されたときに行われます。 SelectTerminal メソッドのターミナル アプリケーションの実装では、ストリームに接続されたターミナルの ITTerminal インターフェイスを使用し、QueryInterface を呼び出して、ITPluggableTerminalEventSinkRegistrationを見つけることができます。
HRESULT hr = E_FAIL;
ITPluggableTerminalEventSinkRegistration* pEventRegistration = NULL;
hr = pTerminal->QueryInterface(
IID_ITPluggableTerminalEventSinkRegistration,
(void**)& pEventRegistration
);
QueryInterface 呼び出しが成功した場合は、RegisterSink メソッドを呼び出すことができます。 このためには、ITPluggableTerminalEventSink インターフェイスを実装するオブジェクトを作成する必要があります。 このインターフェイスは、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.
ITPluggableTerminalEventSinkRegistration 呼び出しを実装するターミナルは、インターフェイスを格納します。 ポインターは、ターミナルがイベントを発生させるときに使用されます。
イベント シンクは、UnregisterSink使用して登録解除できます。
hr = pEventRegistration->UnregisterSink();
// If (hr != S_OK) process the error here.