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

返回值

返回代码 描述
STATUS_SUCCESS
函数成功完成。
STATUS_BUFFER_OVERFLOW
数据包不适合缓冲区,并且未排队。
STATUS_CANCELLED
数据包已取消。
STATUS_DEVICE_REMOVED
通道正在关闭。

言论

客户端可以使用任意参数组合运行此函数。

仅当未设置 *Timeout == 0VMBUS_CHANNEL_FORMAT_FLAG_WAIT_FOR_COMPLETION 标志时,根才能调用它。

重要

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

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

要求

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

另请参阅

KeWaitForSingleObject