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 是在 VirtualChannelWritepUserData 參數中指定的值。

當用戶端會話中斷連線時,就會取消寫入作業。 此通知可讓您釋放與寫入作業相關聯的任何記憶體。

CHANNEL_EVENT_WRITE_COMPLETE

VirtualChannelWrite 呼叫所啟動的寫入作業已完成。 pData 是在 VirtualChannelWritepUserData 參數中指定的值。

[in] pData

事件之其他數據的指標。 數據類型取決於事件,如先前在事件描述中所述。

如果事件CHANNEL_EVENT_DATA_RECEIVED,伺服器所寫入的數據會分成不超過CHANNEL_CHUNK_LENGTH個字節的區塊。 dataFlags 參數會指出目前的區塊位於伺服器所寫入數據的區塊開頭、中間或結尾。

請注意,此參數的大小可以大於 dataLength 參數所指定的值。 應用程式應該只讀取 dataLength 指定的位元元組數目。

[in] dataLength

指定 pData 緩衝區中數據的大小,以位元組為單位。

[in] totalLength

指定由單一寫入作業寫入至虛擬通道伺服器端的數據大小總計,以位元組為單位。

[in] dataFlags

提供在 CHANNEL_EVENT_DATA_RECEIVED 事件中接收之數據區塊的相關信息。 將會設定下列位旗標。

請注意,在比較下列清單中的值時,您不應該使用 '==' 運算符進行直接比較;請改用所述的比較方法。

CHANNEL_FLAG_FIRST

區塊是單一寫入作業所寫入數據的開頭。

比較此旗標時,請使用位比較。

CHANNEL_FLAG_LAST

區塊是由單一寫入作業所寫入的數據結尾。

比較此旗標時,請使用位比較。

CHANNEL_FLAG_MIDDLE

此為預設值。 區塊位於單一寫入作業所寫入數據的區塊中間。

請勿使用位比較來直接比較此旗標值。 請改用位比較來判斷旗標值不是 CHANNEL_FLAG_FIRSTCHANNEL_FLAG_LAST。 這是使用下列比較來完成的: Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST)

CHANNEL_FLAG_ONLY

結合 CHANNEL_FLAG_FIRSTCHANNEL_FLAG_LAST 值。 區塊包含來自單一寫入作業的所有數據。

比較此旗標時,請使用位比較。

傳回值

此函式沒有傳回值。

備註

用戶端 DLL 會使用 VirtualChannelOpen 函式來註冊特定虛擬通道的 VirtualChannelOpenEvent 函式。

您可以使用相同的 VirtualChannelOpenEvent 函式來呼叫 VirtualChannelOpen

在執行時,可以使用不同的事件類型呼叫此函式。 例如,在處理CHANNEL_EVENT_DATA_RECEIVED事件時,可能會使用 CHANNEL_EVENT_WRITE_COMPLETECHANNEL_EVENT_WRITE_CANCELLED 呼叫它。 請注意,此函式不會與目前正在處理的相同事件類型呼叫。

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 cchannel.h

另請參閱

VirtualChannelOpen