EVT_PACKET_QUEUE_START - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// netpacketqueue.h

EVT_PACKET_QUEUE_START EvtPacketQueueStart;

void EvtPacketQueueStart(
  [_In_] NETPACKETQUEUE PacketQueue
)
{...}
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nc-netpacketqueue-evt_packet_queue_start)

EVT_PACKET_QUEUE_START callback function

Description

The EvtPacketQueueStart callback function is an optional callback that is implemented by the client driver to start the data path for a packet queue.

Parameters

PacketQueue [_In_]

A handle to a packet queue.

Prototype

//Declaration

EVT_PACKET_QUEUE_START EvtPacketQueueStart;

// Definition

VOID EvtPacketQueueStart
(
    NETPACKETQUEUE PacketQueue
)
{...}

Remarks

This is an optional callback. Register this callback function in your EVT_NET_ADAPTER_CREATE_TX(RX)QUEUE callback. Set the appropriate member of a NET_PACKET_QUEUE_CONFIG structure after you initialize the structure with NET_PACKET_QUEUE_CONFIG_INIT, then call NetTx(Rx)QueueCreate.

In this callback, a client driver typically configures information that its hardware needs for packet transmission or reception. Because this callback does not return a value and therefore should not fail, client drivers should perform actions such as resource allocation during queue creation. Therefore, this callback should be a light-weight function that executes quickly.

Client drivers will not receive calls to EVT_PACKET_QUEUE_ADVANCE, EVT_PACKET_QUEUE_CANCEL, or EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED until after EvtPacketQueueStart returns. In addition, EvtPacketQueueStart is called in the same execution context, or thread, as EvtPacketQueueAdvance, EvtPacketQueueCancel, and EvtPacketQueueSetNotificationEnabled, so client drivers do not need to synchronize between these callback functions for an individual queue instance.

When a queue starts, NetAdapterCx guarantees that BeginIndex == NextIndex == 0 for all of this queue's ring buffers. After start, the framework does not read or write NextIndex for packet ring buffers, so client drivers can either use it as needed or choose not to use it at all. BeginIndex is read by the framework but is not modified outside of EvtPacketQueueStart.

For more info and a diagram showing the NetAdapterCx data path polling model, see Transmit and receive queues.

See also

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