共用方式為


FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL回呼函式 (vmbuskernelmodeclientlibapi.h)

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

VmbPacketSendWithExternalMdl 函式會將封包緩衝區或外部數據記憶體描述元清單中的數據傳送 (MDL) 。 函式會將該數據與 VMBus 封包對象產生關聯,代表整個交易存留期的封包。

語法

FN_VMB_PACKET_SEND_WITH_EXTERNAL_MDL FnVmbPacketSendWithExternalMdl;

NTSTATUS FnVmbPacketSendWithExternalMdl(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PMDL ExternalDataMdl,
  UINT32 MdlOffset,
  UINT32 MdlLength,
  UINT32 Flags
)
{...}

參數

PacketObject

VMBus 封包物件的句柄。

Buffer

緩衝區,包含透過 VMBus 通道緩衝區傳送的命令封包。

BufferLength

Buffer 參數中緩衝區的長度,以位元組為單位。

ExternalDataMdl

描述與封包相關聯的數據緩衝區的 MDL。

MdlOffset

MDL 所描述之緩衝區開始數據的位移。

MdlLength

要傳送的子緩衝區長度。 針對整個 MDL 使用 0。

Flags

標誌。 以下是相關的旗標:

意義
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
此封包無法視為完成,而且在完成封包從相反端點返回之前,無法釋放其資源。 必須設定此旗標。
VMBUS_CHANNEL_FORMAT_FLAG_FORCE_MDL_LENGTH
一律將 MdlLength 用於外部數據 MDL 的長度,即使此長度超過 MDL 的 ByteCount 字段也一樣。 這隻允許四捨五入至頁面界限,以超過 MDL 的長度。 如果設定此旗標,則只會使用 MDL 鏈結中的第一個 MDL。
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
內嵌緩衝區已分頁,而且必須據以處理,這表示必須在輸入 DPC 層級之前加以複製。 探查使用者模式緩衝區或處理存取違規是呼叫者的責任。

傳回值

如果作業成功,則傳回STATUS_SUCCESS,否則傳回適當的NTSTATUS錯誤碼。

備註

此函式與 VmbPacketSend 函式不同,因為它允許傳遞 MDL 位移和 MDL 長度。

重要

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

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

規格需求

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

另請參閱

VmbPacketSend