EVT_VMB_CHANNEL_SAVE_PACKET回调函数 (vmbuskernelmodeclientlibapi.h)
[一些信息与预发布产品相关,在商业发行之前可能发生实质性修改。 Microsoft 对于此处提供的信息不作任何明示或默示的担保。]
当虚拟化服务提供程序 (VSP) 终结点必须保存与数据包关联的状态时,将调用 EvtVmbChannelSavePacket 回调函数。
语法
EVT_VMB_CHANNEL_SAVE_PACKET EvtVmbChannelSavePacket;
NTSTATUS EvtVmbChannelSavePacket(
[in] VMBCHANNEL Channel,
[in] VMBPACKET Packet,
[out] PVOID SaveBuf,
[in] UINT32 SaveBufSize,
[out] PUINT32 BytesNeeded
)
{...}
参数
[in] Channel
数据包到达的通道。
[in] Packet
VSP 保存状态的数据包。
[out] SaveBuf
要在其中保存状态的缓冲区。
[in] SaveBufSize
SaveBuf 参数的大小(以字节为单位)。
[out] BytesNeeded
保存事务状态所需的大小(以字节为单位)。
返回值
EvtVmbChannelSavePacket 返回状态代码。
注解
VmbServerChannelInitSetSaveRestorePacketCallbacks 函数设置一个回调函数,用于保存每个通道的数据包。
VSP 保存与 VSP 唯一的事务关联的状态。 内核模式客户端库 (KMCL) 保存自己的状态。
对于当前正在使用的每个数据包对象,都会调用此函数。 第一次调用传递 SaveBufSize 参数的零 (0) 值。 如果需要保存任何状态,则此调用将失败,这会将 BytesNeeded 填入实际大小要求。 如果第一次调用返回失败代码,则 KMCL 使用至少第一次调用中指定的长度调用第二次。
要求
要求 | 值 |
---|---|
目标平台 | Windows |
标头 | vmbuskernelmodeclientlibapi.h (包括 VmbusKernelModeClientLibApi.h) |
IRQL | PASSIVE_LEVEL |