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 為零, WTSVirtualChannelRead 會在沒有要讀取的數據時立即傳回。 如果 TimeOut 是 Winbase.h 中定義的 INFINITE () ,則函式會無限期等候直到有數據讀取為止。

[out] Buffer

緩衝區的指標,接收從虛擬通道的伺服器端讀取的數據區塊。 伺服器可以在單一 WTSVirtualChannelRead 呼叫中接收的最大數據量 是CHANNEL_CHUNK_LENGTH 位元組。 如果用戶端的 VirtualChannelWrite 呼叫寫入較大的數據區塊,伺服器必須進行多個 WTSVirtualChannelRead 呼叫。

在某些情況下,遠端桌面服務會將 CHANNEL_PDU_HEADER 結構放在 WTSVirtualChannelRead 函式讀取的每個數據區塊開頭。 如果用戶端 DLL 在呼叫 VirtualChannelInit 函式來初始化虛擬通道時,會設定 CHANNEL_OPTION_SHOW_PROTOCOL 選項,就會發生這種情況。 如果通道是使用 IWTSVirtualChannel::Write 方法寫入的動態虛擬通道,也會發生這種情況。 否則,緩衝區只會接收在 VirtualChannelWrite 呼叫中寫入的數據。

[in] BufferSize

指定 Buffer 的大小,以位元組為單位。 如果 Buffer 中的數據區塊前面會有 CHANNEL_PDU_HEADER 結構,則此參數的值至少應 CHANNEL_PDU_LENGTH。 否則,此參數的值應該至少 CHANNEL_CHUNK_LENGTH

[out] pBytesRead

接收讀取位元組數目的變數指標。

傳回值

如果函式成功,則傳回值是非零值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

注意WTSVirtualChannelRead 不是安全線程。 若要從多個線程存取虛擬通道,或透過虛擬通道執行異步 IO,請使用 WTSVirtualChannelQuery 搭配 WTSVirtualFileHandle。
 

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 wtsapi32.h
程式庫 Wtsapi32.lib
Dll Wtsapi32.Dll

另請參閱

CHANNEL_PDU_HEADER

IWTSVirtualChannel::Write

VirtualChannelWrite

WTSVirtualChannelQuery

WTSVirtualChannelWrite