Поделиться через


функция обратного вызова EVT_PACKET_QUEUE_START (netpacketqueue.h)

Функция обратного вызова EvtPacketQueueStart — это необязательный обратный вызов, который реализуется драйвером клиента для запуска пути к данным для очереди пакетов.

Синтаксис

EVT_PACKET_QUEUE_START EvtPacketQueueStart;

void EvtPacketQueueStart(
  [_In_] NETPACKETQUEUE PacketQueue
)
{...}

Параметры

[_In_] PacketQueue

Дескриптор очереди пакетов.

Возвращаемое значение

None

Remarks

Это необязательный обратный вызов. Зарегистрируйте эту функцию обратного вызова в обратном вызове EVT_NET_ADAPTER_CREATE_TX(RX)QUEUE . Задайте соответствующий член структуры NET_PACKET_QUEUE_CONFIG после инициализации структуры с помощью NET_PACKET_QUEUE_CONFIG_INIT, а затем вызовите NetTx(Rx)QueueCreate.

В этом обратном вызове драйвер клиента обычно настраивает сведения, необходимые его оборудованию для передачи или приема пакетов. Так как этот обратный вызов не возвращает значение и, следовательно, не должен завершать ошибку, клиентские драйверы должны выполнять такие действия, как выделение ресурсов во время создания очереди. Таким образом, этот обратный вызов должен быть легкой функцией, которая выполняется быстро.

Клиентские драйверы не будут получать вызовы EVT_PACKET_QUEUE_ADVANCE, EVT_PACKET_QUEUE_CANCEL или EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED до тех пор, пока не будет возвращено значение EvtPacketQueueStart . Кроме того, 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

NetRxQueueCreate

NetTxQueueCreate

EVT_PACKET_QUEUE_ADVANCE

EVT_PACKET_QUEUE_CANCEL

EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED

EVT_PACKET_QUEUE_STOP