FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK0回调函数 (fwpsk.h)
筛选器引擎调用 vSwitchRuntimeStateSaveNotifyFn (FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK0) 标注函数,以通知标注驱动程序虚拟交换机运行时状态保存事件。
注意
FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK0 是 FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK的特定版本。 有关详细信息 ,请参阅 WFP Version-Independent 名称和面向特定版本的 Windows 。
语法
FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK0 FwpsVswitchRuntimeStateSaveCallback0;
NTSTATUS FwpsVswitchRuntimeStateSaveCallback0(
[in, optional] void *notifyContext,
[in] void *completionContext,
[in] FWPS_VSWITCH_EVENT_TYPE eventType,
[in] const NDIS_SWITCH_PARAMETERS *vSwitch,
[in] NDIS_SWITCH_PORT_ID portId,
void **runtimeState,
[out] SIZE_T *runtimeStateLength
)
{...}
参数
[in, optional] notifyContext
指向标注驱动程序提供的上下文的指针。 驱动程序将此指针传递给 FwpsvSwitchEventsSubscribe0 函数的 notifyContext 参数。 此参数是可选的,可以为 NULL。
[in] completionContext
指向标注驱动程序提供的完成上下文的指针。 此参数是可选的,可以为 NULL。
[in] eventType
指定为 FWPS_VSWITCH_EVENT_TYPE 枚举值之一的虚拟交换机事件的类型。 有关详细信息,请参阅“备注”。
[in] vSwitch
指向包含虚拟交换机相关信息 的 NDIS_SWITCH_PARAMETERS 结构的指针。
注意
NDIS_SWITCH_PARAMETERS结构中的信息反映虚拟交换机的初始状态,不一定反映其当前状态。 具体而言, NumSwitchPorts 和 IsActive 成员的初始值可能仍为零,除非已触发虚拟交换机 PnP 事件。 可以在此回调函数的其他参数中找到当前状态信息。
[in] portId
源交换机端口标识符。
runtimeState
运行时状态输出结果缓冲区的位置。
[out] runtimeStateLength
运行时状态缓冲区中运行时状态信息的长度(以字节为单位)。
返回值
标注的 FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK0 函数返回以下 NTSTATUS 代码之一。
返回代码 | 说明 |
---|---|
STATUS_SUCCESS | 标注驱动程序接受来自筛选器引擎的通知。 |
STATUS_PENDING | 操作处于挂起状态,稍后将完成。 标注驱动程序将调用 FwpsvSwitchNotifyComplete0 函数来完成挂起的操作。 |
其他状态代码 | 出现了错误。 |
注解
标注驱动程序通过调用 FwpsvSwitchEventsSubscribe0 函数注册 vSwitchRuntimeStateSaveNotifyFn 函数。
如果注册了 vSwitchRuntimeStateSaveNotifyFn 回调,则会通知标注检索源 VM 的运行时状态,并在实时迁移或本地保存和还原操作期间还原目标 VM 的运行时状态。 在保存情况下,vSwitchRuntimeStateSaveNotifyFn 的 eventType 参数设置为 FWPS_VSWITCH_EVENT_RUNTIME_STATE_SAVE。
虚拟交换机扩展协议驱动程序在操作期间发出对象标识符 (OID) 方法请求 OID_SWITCH_NIC_SAVE ,以保存虚拟交换机端口的运行时数据。 筛选器驱动程序返回此数据,以便以后可以保存和还原虚拟交换机端口的运行时数据。
收集来自所有标注的运行时数据 Blob 后,WFP 会用收获的数据填充 NDIS_SWITCH_NIC_SAVE_STATE 结构,并完成保存状态请求。
标注可以从 vSwitchRuntimeStateSaveNotifyFn 返回STATUS_PENDING。 在这种情况下,WFP 将在 FilterOidRequest 处理程序中返回STATUS_PENDING,并在以后完成它。 标注驱动程序将调用 FwpsvSwitchNotifyComplete0 函数来完成挂起的操作。
有关还原运行时状态的信息,请参阅 vSwitchRuntimeStateRestoreNotifyFn (FWPS_VSWITCH_RUNTIME_STATE_RESTORE_CALLBACK0) 函数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | Windows |
标头 | fwpsk.h (包括 Fwpsk.h) |
IRQL | <= DISPATCH_LEVEL |