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 (0) 超时,如果数据包不在环形缓冲区中,则不会排队。

返回值

返回代码 说明
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