Win32 API 日本語リファレンス
ホーム › System.RemoteDesktop › PCHANNEL_OPEN_EVENT_FN

PCHANNEL_OPEN_EVENT_FN

コールバック

シグネチャ

void PCHANNEL_OPEN_EVENT_FN(
    DWORD openHandle,
    DWORD event,
    void* pData,
    DWORD dataLength,
    DWORD totalLength,
    DWORD dataFlags
);

パラメーター

フィールド型説明
openHandleDWORD仮想チャネルへのハンドルです。これは VirtualChannelOpen 関数の pOpenHandle パラメーターで返されたハンドルです。
eventDWORD

通知の原因となったイベントを示します。このパラメーターには次のいずれかの値を指定できます。

CHANNEL_EVENT_DATA_RECEIVED

仮想チャネルがサーバー側からデータを受信しました。pData はデータの チャンクへのポインターです。dataLength はこのチャンクのサイズを示します。 totalLength はサーバーが書き込んだデータの総サイズを示します。

CHANNEL_EVENT_WRITE_CANCELLED

VirtualChannelWrite の呼び出しによって 開始された書き込み操作がキャンセルされました。pData は VirtualChannelWrite の pUserData パラメーターで指定された値です。

書き込み操作は、クライアントセッションが切断されたときにキャンセルされます。この通知によって、書き込み操作に関連付けられたメモリを 解放できます。

CHANNEL_EVENT_WRITE_COMPLETE

VirtualChannelWrite の呼び出しによって 開始された書き込み操作が完了しました。pData は VirtualChannelWrite の pUserData パラメーターで指定された値です。

pDatavoid*

イベントに関する追加データへのポインターです。データの型はイベントによって異なり、前述のイベントの説明のとおりです。

event が CHANNEL_EVENT_DATA_RECEIVED の場合、サーバーが書き込んだデータは CHANNEL_CHUNK_LENGTH バイト以下のチャンクに分割されます。dataFlags パラメーターは、現在のチャンクが サーバーが書き込んだデータブロックの先頭、中間、末尾のいずれであるかを示します。

このパラメーターのサイズは dataLength パラメーターで指定された値より大きくなる場合があることに注意してください。アプリケーションは dataLength で指定されたバイト数だけを読み取る必要があります。

dataLengthDWORDpData バッファー内のデータのサイズをバイト単位で指定します。
totalLengthDWORD仮想チャネルのサーバー側に対する 1 回の書き込み操作で書き込まれたデータの総サイズを バイト単位で指定します。
dataFlagsDWORD

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 回の書き込み操作のすべてのデータが含まれます。

このフラグを比較するときはビット単位の比較を使用してください。

公式ドキュメント

Remote Desktop Services が、特定の仮想チャネルに関するイベントを クライアント DLL に通知するために呼び出す、アプリケーション定義のコールバック関数です。

PCHANNEL_OPEN_EVENT_FN 型は、このコールバック関数へのポインターを定義します。 VirtualChannelOpenEvent は、 アプリケーション定義またはライブラリ定義の関数名を表すプレースホルダーです。

戻り値

この関数は値を返しません。

解説(Remarks)

クライアント DLL は、 VirtualChannelOpen 関数を使用して、 特定の仮想チャネルに対する VirtualChannelOpenEvent 関数を登録します。

同じ VirtualChannelOpenEvent 関数を、 VirtualChannelOpen の複数の呼び出しに使用できます。

この関数は、実行中に別のイベント型で呼び出されることがあります。たとえば、CHANNEL_EVENT_DATA_RECEIVED イベントを 処理している間に CHANNEL_EVENT_WRITE_COMPLETE または CHANNEL_EVENT_WRITE_CANCELLED で呼び出される場合があります。ただし、この関数が現在処理中のものと 同じイベント型で呼び出されることはありません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)