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
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