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を使用して構造体を初期化した後、netTx(Rx)QueueCreate を呼び出した後、NET_PACKET_QUEUE_CONFIG構造体の適切なメンバーを設定します。

このコールバックでは、クライアント ドライバーは通常、そのハードウェアがパケットの送信または受信に必要な情報を構成します。 このコールバックでは値が返されないため、失敗しないようにするため、クライアント ドライバーは、キューの作成時にリソースの割り当てなどのアクションを実行する必要があります。 したがって、このコールバックは、迅速に実行される軽量関数である必要があります。

クライアント ドライバーは、EvtPacketQueueStart が返されるまで、EVT_PACKET_QUEUE_ADVANCEEVT_PACKET_QUEUE_CANCEL、またはEVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLEDへの呼び出しを受け取りません。 さらに、EvtPacketQueueStart は、EvtPacketQueueAdvance、EvtPacketQueueCancelEvtPacketQueueSetNotificationEnabled と同じ実行コンテキストまたはスレッドで呼び出されるため、クライアント ドライバーは個々のキュー インスタンスに対してこれらのコールバック関数間で同期する必要はありません。

キューが開始されると、NetAdapterCx は、このキューのすべてのリング バッファーに 対して BeginIndex == NextIndex == 0 を保証します。 起動後、フレームワークはパケット リング バッファーの NextIndex の読み取りまたは書き込みを行わないので、クライアント ドライバーは必要に応じてそれを使用するか、まったく使用しないことを選択できます。 BeginIndex はフレームワークによって読み取られますが、 EvtPacketQueueStart の外部では変更されません。

NetAdapterCx データ パス ポーリング モデルを示す詳細と図については、「キューの 送受信」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.27
Header 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