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