EVT_PACKET_QUEUE_START回调函数 (netpacketqueue.h)
EvtPacketQueueStart 回调函数是客户端驱动程序为启动数据包队列数据路径而实现的可选回调。
语法
EVT_PACKET_QUEUE_START EvtPacketQueueStart;
void EvtPacketQueueStart(
[_In_] NETPACKETQUEUE PacketQueue
)
{...}
参数
[_In_] PacketQueue
数据包队列的句柄。
返回值
无
备注
这是一个可选的回调。 在 EVT_NET_ADAPTER_CREATE_TX (RX) QUEUE 回调中注册此回调函数。 使用 NET_PACKET_QUEUE_CONFIG_INIT 初始化结构后,设置 NET_PACKET_QUEUE_CONFIG结构的相应成员,然后调用 NetTx (Rx) QueueCreate。
在此回调中,客户端驱动程序通常配置其硬件进行数据包传输或接收所需的信息。 由于此回调不返回值,因此不应失败,因此客户端驱动程序应在队列创建期间执行资源分配等操作。 因此,此回调应该是一个轻量级函数,可快速执行。
在 EvtPacketQueueStart 返回之前,客户端驱动程序不会收到对 EVT_PACKET_QUEUE_ADVANCE、EVT_PACKET_QUEUE_CANCEL 或EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED的调用。 此外,EvtPacketQueueStart 在与 EvtPacketQueueAdvance、EvtPacketQueueCancel 和 EvtPacketQueueSetNotificationEnabled 相同的执行上下文或线程中调用,因此客户端驱动程序不需要在单个队列实例的这些回调函数之间同步。
当队列启动时,NetAdapterCx 保证此队列的所有环形缓冲区的 BeginIndex == NextIndex == 0 。 启动后,框架不会读取或写入数据包环缓冲区的 NextIndex ,因此客户端驱动程序可以根据需要使用它,或者选择根本不使用它。 BeginIndex 由框架读取,但不会在 EvtPacketQueueStart 之外修改。
有关显示 NetAdapterCx 数据路径轮询模型的详细信息和图表,请参阅 传输和接收队列。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.27 |
标头 | netpacketqueue.h (包括 netadaptercx.h) |
IRQL | PASSIVE_LEVEL |
另请参阅
EVT_NET_ADAPTER_CREATE_RXQUEUE
EVT_NET_ADAPTER_CREATE_TXQUEUE
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈