EVT_VMB_CHANNEL_SUSPEND回调函数 (vmbuskernelmodeclientlibapi.h)
[一些信息与预发布产品相关,在商业发行之前可能发生实质性修改。 Microsoft 对于此处提供的信息不作任何明示或默示的担保。]
当通道被客户端终结点关闭或删除时,会在服务器终结点调用 EvtVmbChannelSuspend 回调函数,这将将服务器移动到“已停止”状态。
语法
EVT_VMB_CHANNEL_SUSPEND EvtVmbChannelSuspend;
void EvtVmbChannelSuspend(
[in] VMBCHANNEL Channel
)
{...}
参数
[in] Channel
暂停的通道。
返回值
无
备注
创建通道后,客户端驱动程序可以使用 VMB_CHANNEL_STATE_CHANGE_CALLBACKS_INIT 函数为状态更改指定回调函数,包括 EvtVmbChannelSuspend。
如果使用 VmbChannelPause 函数挂起正在运行的通道,或者通过使用 VmbChannelDisable 函数或通过相反终结点关闭,则内核模式客户端库 (KMCL) 调用 EvtVmbChannelSuspend。 此回调保证不再运行或排队的 EvtVmbChannelProcessPacket 回调。
EvtVmbChannelSuspend 还通知 KMCL 客户端最终必须完成使用 EvtVmbChannelProcessPacket 指示的所有未完成数据包,这些数据包不必同步完成。 KMCL 阻止,直到它们完成。
KMCL 客户端还必须通过使用 VmbPacketSend、 VmbPacketSendWithExternalMdl 或 VmbPacketSendWithExternalPfns 函数停止发送数据包。
在调用 EvtVmbChannelSuspend 之前,对活动通道上的 VmbChannelPause 的调用将阻止,并且不再存在未完成的传入数据包。
调用 VmbChannelDisable 块,直到通道暂停和关闭。
此函数可以保证完成未完成的事务。 客户端可能是 bug、恶意的,或者来宾虚拟机可能已崩溃。 服务器必须停用任何未完成的事务(可能通过取消这些事务)。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | vmbuskernelmodeclientlibapi.h (包括 VmbusKernelModeClientLibApi.h) |
IRQL | PASSIVE_LEVEL |