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 數據路徑輪詢模型的圖表,請參閱 傳輸和接收佇列。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.27 |
最低UMDF版本 | 2.33 |
標頭 | netpacketqueue.h (包含 netadaptercx.h) |
IRQL | PASSIVE_LEVEL |
另請參閱
EVT_NET_ADAPTER_CREATE_RXQUEUE
EVT_NET_ADAPTER_CREATE_TXQUEUE