次の方法で共有


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_ADVANCEEVT_PACKET_QUEUE_CANCEL、またはEVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLEDの呼び出しを受け取りません。 さらに、 EvtPacketQueueStart は、 EvtPacketQueueAdvanceEvtPacketQueueCancelEvtPacketQueueSetNotificationEnabled と同じ実行コンテキストまたはスレッドで呼び出されるため、クライアント ドライバーは個々のキュー インスタンスに対してこれらのコールバック関数間で同期する必要はありません。

キューが開始されると、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