FN_VMB_CHANNEL_CREATE_GPADL_FROM_MDL回调函数 (vmbuskernelmodeclientlibapi.h)

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

VmbChannelCreateGpadlFromMdl 函数创建描述符列表(GPADL),用于描述客户端缓冲区。 GPADL 可用于服务器来访问缓冲区。

语法

FN_VMB_CHANNEL_CREATE_GPADL_FROM_MDL FnVmbChannelCreateGpadlFromMdl;

NTSTATUS FnVmbChannelCreateGpadlFromMdl(
  VMBCHANNEL Channel,
  UINT32 Flags,
  PMDL Mdl,
  UINT32 StartOffsetWithinMdl,
  UINT32 DataLengthWithinMdl,
  PUINT32 GpadlHandle
)
{...}

参数

Channel

通道的句柄。

Flags

标志。 可能的值如下:

价值 意义
VMBUS_CHANNEL_GPADL_READ_ONLY
如果指定此值,则缓冲区为只读。 否则,服务器可以写入缓冲区。 这不是安全措施,但可以提高快照和实时迁移性能。

Mdl

指向描述缓冲区的内存描述符列表(MDL)链的指针。 缓冲区可能有多个片段,这些片段通过使用 MDL 下一个指针链接。

StartOffsetWithinMdl

MDL 中要在其中启动映射的偏移量(以字节为单位)。

DataLengthWithinMdl

缓冲区链的长度(以字节为单位)。 如果此值为零(0),请使用到 MDL 末尾。

GpadlHandle

创建的 MDL 的 GPADL 句柄。 将此项发送到服务器以与 VmbChannelMapGpadl 函数一起使用。

返回值

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

言论

当此函数返回时,服务器终结点可以调用 VmbChannelMapGpadl,因为 VMBus 已将 GPADL 说明发送到相反终结点并收到确认。

必须使用 VmbChannelDeleteGpadl 函数删除 GPADL。

重要

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

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

要求

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

另请参阅

VmbChannelDeleteGpadl

VmbChannelMapGpadl