共用方式為


FN_VMB_CHANNEL_SEND_SYNCHRONOUS_REQUEST回呼函式 (vmbuskernelmodeclientlibapi.h)

[某些資訊與發行前發行的產品有關,在正式發行前可能會大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。]

VmbChannelSendSynchronousRequest 函式會將封包傳送至相反的端點,並等候回應。

語法

FN_VMB_CHANNEL_SEND_SYNCHRONOUS_REQUEST FnVmbChannelSendSynchronousRequest;

NTSTATUS FnVmbChannelSendSynchronousRequest(
  VMBCHANNEL Channel,
  PVOID Buffer,
  UINT32 BufferSize,
  PMDL ExternalDataMdl,
  UINT32 Flags,
  PVOID CompletionBuffer,
  PUINT32 CompletionBufferSize,
  PLARGE_INTEGER Timeout
)
{...}

參數

Channel

通道的句柄。

Buffer

要傳送的數據。

BufferSize

要傳送之數據的大小,以位元組為單位。

ExternalDataMdl

描述符清單 (MDL) ,描述要傳送的其他緩衝區。

Flags

標準旗標。

CompletionBuffer

用來儲存完成封包結果的緩衝區。

CompletionBufferSize

CompletionBuffer 值的大小,以位元組為單位。 此值必須四捨五入到最接近的8個字節,否則函式會失敗。 成功時,傳回寫入 CompletionBuffer 的位元元組數目。

Timeout

KeWaitForSingleObject 路由樣式的逾時。 經過此時間之後,封包就會取消。 若為零的逾時 (0) ,如果封包不在通道緩衝區中,則不會排入佇列。

傳回值

傳回碼 Description
STATUS_SUCCESS
函式成功完成。
STATUS_BUFFER_OVERFLOW
封包不符合緩衝區,且未排入佇列。
STATUS_CANCELLED
封包已取消。
STATUS_DEVICE_REMOVED
通道正在關閉。

備註

用戶端可以使用任何參數組合來執行此函式。

如果未設定 VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION 旗標則根目錄只能呼叫這個 *Timeout == 0

重要

此函式是透過 VMBus 核心模式用戶端連結庫 (KMCL) 介面呼叫,由 Vmbkmcl.sys 總線驅動程式提供。 這是從 KMCL_CLIENT_INTERFACE_V1 結構存取的用戶端函式。

如需詳細資訊,請參閱 KMCL_CLIENT_INTERFACE_V1的一節。

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1803)
標頭 vmbuskernelmodeclientlibapi.h

另請參閱

KeWaitForSingleObject