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