過度配置驅動程式發出OID_RECEIVE_FILTER_ALLOCATE_QUEUE的物件標識碼 (OID) 方法要求,以配置具有一組初始組態參數的佇列。
NDIS_OID_REQUEST 結構 InformationBuffer 成員包含 NDIS_RECEIVE_QUEUE_PARAMETERS 結構的指標。 從 OID 方法要求成功傳回之後,NDIS_OID_REQUEST 結構 InformationBuffer 成員包含具有新佇列標識碼之 NDIS_RECEIVE_QUEUE_PARAMETERS 結構的指標。
言論
OID_RECEIVE_FILTER_ALLOCATE_QUEUE的 OID 方法要求對於 NDIS 6.20 和更新版本的迷你埠驅動程式而言是選擇性的。 支援虛擬機佇列 (VMQ) 介面的迷你埠驅動程式是必要專案。
過度配置驅動程式會使用其要求的佇列組態,初始化 NDIS_RECEIVE_QUEUE_PARAMETERS 結構。 NDIS 會在 QueueId 中指派佇列標識碼,NDIS_RECEIVE_QUEUE_PARAMETERS 結構 成員,並將方法要求傳遞至迷你埠驅動程式。
附註 過度配置驅動程式可以在 NDIS_RECEIVE_QUEUE_PARAMETERS 結構的 旗標 成員中設定 NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION 和 NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED 旗標。 其他旗標不會用於佇列配置。
在迷你埠驅動程序發出OID_RECEIVE_FILTER_ALLOCATE_QUEUE的 OID 要求並成功處理之後,佇列會處於暫停狀態。
過度裝載的驅動程序必須使用 NDIS 在後續 OID 要求中提供的佇列標識碼,例如修改佇列參數或釋放佇列。 佇列標識碼也會包含在與佇列相關聯之所有 NET_BUFFER_LIST 結構的頻外 (OOB) 數據中。 驅動程式會使用 NET_BUFFER_LIST_RECEIVE_QUEUE_ID 巨集來擷取 NET_BUFFER_LIST 結構中的佇列標識碼。
當 NDIS 收到配置接收佇列的 OID 要求時,它會驗證佇列參數。 在 NDIS 配置必要的資源和佇列標識符之後,它會將 OID 要求提交至基礎迷你埠驅動程式。 佇列標識碼對相關聯的網路適配器而言是唯一的。
如果迷你埠驅動程式可以成功為接收佇列配置必要的軟體和硬體資源,則會傳回 NDIS_STATUS_SUCCESS來完成 OID 要求。
迷你埠驅動程序必須保留已配置接收佇列的佇列標識碼。 NDIS 會針對迷你埠驅動程序的後續呼叫使用接收佇列的佇列標識碼,以便在接收佇列上設定接收篩選、變更接收佇列參數,或釋放接收佇列。
過度配置驅動程式配置一或多個接收佇列並選擇性地設定初始篩選之後,它必須發出 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 設定 OID 要求,以通知迷你埠驅動程式目前接收佇列的配置已完成。
如果該佇列上沒有設定篩選條件,迷你埠驅動程式不得保留接收佇列中的任何封包。 如果佇列從未設定任何篩選或清除所有篩選條件,則佇列應該是空的,而且應該捨棄任何封包。 也就是說,封包不會指出驅動程式堆疊或保留在佇列中。
過度配置驅動程式會使用 OID_RECEIVE_FILTER_FREE_QUEUE 的 OID 要求來釋放其配置的佇列。
傳回狀態代碼
NDIS 或迷你埠驅動程式會針對 OID_RECEIVE_FILTER_ALLOCATE_QUEUE 的 OID 方法要求傳回下列其中一個狀態代碼。
| 狀態代碼 | 描述 |
|---|---|
NDIS_STATUS_SUCCESS |
已成功配置佇列。 信息緩衝區包含更新的 NDIS_RECEIVE_QUEUE_PARAMETERS 結構。 |
NDIS_STATUS_PENDING |
要求擱置完成。 最終狀態代碼和結果會傳遞至呼叫端的 OID 要求完成處理程式。 |
NDIS_STATUS_INVALID_PARAMETER |
提供過度驅動程式的一或多個參數無效。 |
NDIS_STATUS_INVALID_LENGTH |
信息緩衝區太短。 NDIS 會設定 DATA。METHOD_INFORMATION。BytesNeeded 成員 NDIS_OID_REQUEST 結構中所需的緩衝區大小下限。 |
NDIS_STATUS_NOT_SUPPORTED |
迷你埠驅動程式的NDIS版本早於6.20版。 |
NDIS_STATUS_FAILURE |
要求因其他原因而失敗。 |
要求
版本 |
NDIS 6.20 和更新版本支援。 |
頁眉 |
Ntddndis.h (包括 Ndis.h) |
另請參閱
NET_BUFFER_LIST_RECEIVE_QUEUE_ID