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 |
最低 UMDF 版本 | 2.33 |
标头 | netpacketqueue.h (包括 netadaptercx.h) |
IRQL | PASSIVE_LEVEL |
另请参阅
EVT_NET_ADAPTER_CREATE_RXQUEUE
EVT_NET_ADAPTER_CREATE_TXQUEUE