Share via


WTSVirtualChannelRead 関数 (wtsapi32.h)

仮想チャネルのサーバー側からデータを読み取ります。

WTSVirtualChannelRead は、仮想チャネルのクライアント側で VirtualChannelWrite 呼び出しによって書き込まれたデータを読み取ります。

構文

BOOL WTSVirtualChannelRead(
  [in]  HANDLE hChannelHandle,
  [in]  ULONG  TimeOut,
  [out] PCHAR  Buffer,
  [in]  ULONG  BufferSize,
  [out] PULONG pBytesRead
);

パラメーター

[in] hChannelHandle

WTSVirtualChannelOpen 関数によって開かれた仮想チャネルへのハンドル。

[in] TimeOut

タイムアウトをミリ秒単位で指定します。 TimeOut が 0 の場合、読み取るデータがない場合、WTSVirtualChannelRead は直ちにを返します。 TimeOut が INFINITE (Winbase.h で定義) の場合、関数は読み取るデータが存在するまで無期限に待機します。

[out] Buffer

仮想チャネルのサーバー側から読み取られたデータのチャンクを受け取るバッファーへのポインター。 サーバーが 1 つの WTSVirtualChannelRead 呼び出しで受信できる最大データ量は 、CHANNEL_CHUNK_LENGTH バイトです。 クライアントの VirtualChannelWrite 呼び出しで大きなデータ ブロックが書き込まれる場合、サーバーは複数の WTSVirtualChannelRead 呼び出しを行う必要があります。

場合によっては、リモート デスクトップ サービスは WTSVirtualChannelRead 関数によって読み取られたデータの各チャンクの先頭にCHANNEL_PDU_HEADER構造を配置します。 これは、クライアント DLL が VirtualChannelInit 関数を呼び出して仮想チャネルを初期化するときに、CHANNEL_OPTION_SHOW_PROTOCOL オプションを設定した場合に発生します。 これは、チャネルが IWTSVirtualChannel::Write メソッドを使用して書き込まれた動的仮想チャネルである場合にも発生します。 それ以外の場合、バッファーは VirtualChannelWrite 呼び出しで書き込まれたデータのみを受け取ります。

[in] BufferSize

Buffer のサイズをバイト単位で指定 しますBuffer 内のデータのチャンクの前にCHANNEL_PDU_HEADER構造体がある場合、このパラメーターの値は少なくともCHANNEL_PDU_LENGTHする必要があります。 それ以外の場合、このパラメーターの値は少なくとも CHANNEL_CHUNK_LENGTHする必要があります。

[out] pBytesRead

読み取られたバイト数を受け取る変数へのポインター。

戻り値

関数が成功した場合、戻り値は 0 以外の値になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

WTSVirtualChannelRead はスレッド セーフではありません。 複数のスレッドから仮想チャネルにアクセスしたり、仮想チャネルを介して非同期 IO を実行したりするには、WTSVirtualFileHandle で WTSVirtualChannelQuery を使用します。
 

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー wtsapi32.h
Library Wtsapi32.lib
[DLL] Wtsapi32.Dll

こちらもご覧ください

CHANNEL_PDU_HEADER

IWTSVirtualChannel::Write

VirtualChannelWrite

WTSVirtualChannelQuery

WTSVirtualChannelWrite