FN_VMB_PACKET_SEND_WITH_EXTERNAL_PFNS回调函数 (vmbuskernelmodeclientlibapi.h)

[某些信息与预发行的产品有关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。

VmbPacketSendWithExternalPfns 函数将数据包缓冲区或外部数据中的数据作为页帧编号(PFN)数组发送。 该函数将该数据与 VMBus 数据包对象相关联,该对象表示事务整个生存期的数据包。

语法

FN_VMB_PACKET_SEND_WITH_EXTERNAL_PFNS FnVmbPacketSendWithExternalPfns;

NTSTATUS FnVmbPacketSendWithExternalPfns(
  __drv_aliasesMem VMBPACKET PacketObject,
  PVOID Buffer,
  UINT32 BufferLength,
  PPFN_NUMBER ExternalDataPfns,
  UINT32 PfnLength,
  UINT32 Flags
)
{...}

参数

PacketObject

VMBus 数据包对象的句柄。

Buffer

包含通过 VMBus 环缓冲区发送的命令数据包的缓冲区。

BufferLength

Buffer 参数中缓冲区的长度(以字节为单位)。

ExternalDataPfns

描述与数据包关联的数据缓冲区的页帧编号数组。

PfnLength

要从 ExternalDataPfns发送的 PFN 数。 最终引用的数组索引 ExternalDataPfns[PfnOffset+PfnLength-1] 非独占。

Flags

标志。 以下是相关的标志:

价值 意义
VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION
在完成数据包从相反的终结点恢复之前,无法将此数据包视为已完成,并且无法释放其资源。 必须设置此标志。
VMBUS_CHANNEL_FORMAT_FLAG_PAGED_BUFFER
内联缓冲区进行分页,必须相应地进行处理,这意味着必须在输入 DPC 级别之前复制它。 探测用户模式缓冲区或处理访问冲突是调用方的责任。

返回值

如果作成功,则返回STATUS_SUCCESS;否则返回相应的 NTSTATUS 错误代码。

言论

此函数不同于 VmbPacketSend 函数,因为它允许传递一组有效物理地址的 PFN。

重要

此函数通过 Vmbkmcl.sys 总线驱动程序提供的 VMBus 内核模式客户端库(KMCL)接口调用。 这是从 KMCL_CLIENT_INTERFACE_V1 结构访问的客户端函数。

有关详细信息,请参阅 KMCL_CLIENT_INTERFACE_V1的“备注”部分。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1803
标头 vmbuskernelmodeclientlibapi.h

另请参阅

VmbPacketSend