CHANNEL_OPEN_EVENT_FN コールバック関数 (cchannel.h)
特定の仮想チャネルのイベントをクライアント DLL に通知するためにリモート デスクトップ サービスが呼び出すアプリケーション定義のコールバック関数。
PCHANNEL_OPEN_EVENT_FN型は、このコールバック関数へのポインターを定義します。 VirtualChannelOpenEvent は、アプリケーション定義またはライブラリ定義関数名のプレースホルダーです。
構文
CHANNEL_OPEN_EVENT_FN ChannelOpenEventFn;
VOID VCAPITYPE ChannelOpenEventFn(
[in] DWORD openHandle,
[in] UINT event,
[in] LPVOID pData,
[in] UINT32 dataLength,
[in] UINT32 totalLength,
[in] UINT32 dataFlags
)
{...}
パラメーター
[in] openHandle
仮想チャネルへのハンドル。 これは、VirtualChannelOpen 関数の pOpenHandle パラメーターで返されるハンドルです。
[in] event
通知の原因となったイベントを示します。 このパラメーターには、次の値のいずれかを指定できます。
CHANNEL_EVENT_DATA_RECEIVED
仮想チャネルは、サーバー側からデータを受信しました。 pData は、データのチャンクへのポインターです。 dataLength は、このチャンクのサイズを示します。 totalLength は、サーバーによって書き込まれたデータの合計サイズを示します。
CHANNEL_EVENT_WRITE_CANCELLED
VirtualChannelWrite 呼び出しによって開始された書き込み操作が取り消されました。 pData は、VirtualChannelWrite の pUserData パラメーターで指定された値です。
クライアント セッションが切断されると、書き込み操作が取り消されます。 この通知を使用すると、書き込み操作に関連付けられているすべてのメモリを解放できます。
CHANNEL_EVENT_WRITE_COMPLETE
VirtualChannelWrite 呼び出しによって開始された書き込み操作が完了しました。 pData は、VirtualChannelWrite の pUserData パラメーターで指定された値です。
[in] pData
イベントの追加データへのポインター。 データの種類は、イベントの説明で前述したように、イベントによって異なります。
イベントがCHANNEL_EVENT_DATA_RECEIVED場合、サーバーによって書き込まれたデータは、CHANNEL_CHUNK_LENGTH バイト以下のチャンクに分割されます。 dataFlags パラメーターは、サーバーによって書き込まれたデータ ブロックの先頭、中央、または末尾に現在のチャンクがあるかどうかを示します。
このパラメーターのサイズは、 dataLength パラメーターで指定された値より大きくできることに注意してください。 アプリケーションでは、 dataLength で指定されたバイト数のみを読み取る必要があります。
[in] dataLength
pData バッファー内のデータのサイズをバイト単位で指定します。
[in] totalLength
1 回の書き込み操作によって仮想チャネルのサーバー側に書き込まれたデータの合計サイズをバイト単位で指定します。
[in] dataFlags
CHANNEL_EVENT_DATA_RECEIVED イベントで受信されるデータのチャンクに関する情報を提供します。 次のビット フラグが設定されます。
次の一覧の値を比較するときは、'==' 演算子を使用して直接比較しないでください。代わりに、説明されている比較メソッドを使用してください。
CHANNEL_FLAG_FIRST
チャンクは、1 つの書き込み操作によって書き込まれたデータの先頭です。
このフラグを比較するときは、ビットごとの比較を使用します。
CHANNEL_FLAG_LAST
チャンクは、1 つの書き込み操作によって書き込まれたデータの末尾です。
このフラグを比較するときは、ビットごとの比較を使用します。
CHANNEL_FLAG_MIDDLE
既定値です。 チャンクは、1 つの書き込み操作によって書き込まれたデータ ブロックの中央にあります。
ビットごとの比較を使用して、このフラグ値を直接比較しないでください。 代わりに、ビットごとの比較を使用して、フラグ値が CHANNEL_FLAG_FIRST または CHANNEL_FLAG_LASTされていないことを判断します。 これは、次の比較を使用して行われます: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST)
。
CHANNEL_FLAG_ONLY
CHANNEL_FLAG_FIRSTとCHANNEL_FLAG_LASTの値を結合します。 チャンクには、1 つの書き込み操作のすべてのデータが含まれます。
このフラグを比較するときは、ビットごとの比較を使用します。
戻り値
この関数には戻り値がありません。
注釈
クライアント DLL では、 VirtualChannelOpen 関数を使用して、特定 の仮想チャネルの VirtualChannelOpenEvent 関数を登録します。
VirtualChannelOpen への複数の呼び出しには、同じ VirtualChannelOpenEvent 関数を使用できます。
この関数は、実行中に別のイベントの種類で呼び出すことができます。 たとえば、CHANNEL_EVENT_DATA_RECEIVED イベントの処理中に、CHANNEL_EVENT_WRITE_COMPLETEまたはCHANNEL_EVENT_WRITE_CANCELLEDで呼び出される場合があります。 この関数は、現在処理中と同じイベントの種類では呼び出されないことに注意してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | cchannel.h |