OID_RECEIVE_FILTER_FREE_QUEUE
NDIS 通訊協定驅動程式會發出物件識別碼 (OID) 設定OID_RECEIVE_FILTER_FREE_QUEUE要求以釋放接收佇列。
NDIS_OID_REQUEST結構的InformationBuffer成員包含具有類型NDIS_RECEIVE_QUEUE_ID之佇列識別碼之NDIS_RECEIVE_QUEUE_FREE_PARAMETERS結構的指標。
備註
OID_RECEIVE_FILTER_FREE_QUEUE的 OID 集合要求是 NDIS 6.20 和更新版本的迷你埠驅動程式選擇性要求。 支援虛擬機器佇列介面的迷你埠驅動程式是必要的。
在過度配置驅動程式發出 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 來配置接收佇列之後,它會發出OID_RECEIVE_FILTER_FREE_QUEUE OID 釋放接收佇列。
當 NDIS 要求迷你埠驅動程式釋放 VMQ 接收佇列時,它會遵循下列步驟:
網路介面卡會停止資料的 DMA 傳輸,以接收與接收佇列相關聯的緩衝區,之後佇列必須進入 DMA 已停止狀態。 網路介面卡在收到 OID_RECEIVE_FILTER_CLEAR_FILTER OID 要求時,可能會停止 DMA 活動,以清除接收佇列上的最後一個設定篩選。
迷你埠驅動程式會產生NDIS_STATUS_RECEIVE_QUEUE_STATE狀態指示,並將NDIS_RECEIVE_QUEUE_STATE結構的QueueState成員設定為NdisReceiveQueueOperationalStateDmaStopped,以通知 NDIS 已停止 DMA 傳輸。
迷你埠驅動程式會等候所有指定的接收封包,讓該佇列傳回迷你埠驅動程式。
迷你埠驅動程式會藉由呼叫 NdisFreeSharedMemory,釋放配置給網路介面卡接收緩衝區的所有共用記憶體。
迷你埠驅動程式會完成 OID_RECEIVE_FILTER_FREE_QUEUE OID 要求,以釋放接收佇列。
迷你埠驅動程式會呼叫 NdisFreeSharedMemory 函 式,以釋放佇列的共用記憶體。 如果迷你埠驅動程式為非預設佇列配置了共用記憶體,則驅動程式會在釋放佇列時,釋放OID_RECEIVE_FILTER_FREE_QUEUE OID 內容中的共用記憶體。 迷你埠驅動程式會釋放它們為 MiniportHaltEx 函式內容中預設佇列配置的共用記憶體。
過度配置驅動程式必須先釋放它在佇列上設定的所有篩選,才能釋放佇列。 此外,過度分配的驅動程式必須先釋放配置在網路介面卡上的所有接收佇列,才能呼叫 NdisCloseAdapterEx 函 式,以關閉與網路介面卡的系結。 NDIS 會先釋放網路介面卡上配置的所有佇列,再呼叫迷你埠驅動程式的 MiniportHaltEx 函 式。
傳回狀態碼
迷你埠驅動程式的 MiniportOidRequest 函式會針對此要求傳回下列其中一個值:
詞彙 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
迷你埠驅動程式已成功完成要求。 |
NDIS_STATUS_PENDING |
迷你埠驅動程式會以非同步方式完成要求。 在迷你埠驅動程式完成所有處理之後,它必須藉由呼叫NdisMOidRequestComplete函式來成功要求,並傳遞Status參數的NDIS_STATUS_SUCCESS。 |
NDIS_STATUS_NOT_ACCEPTED |
迷你埠驅動程式已重設。 |
NDIS_STATUS_REQUEST_ABORTED |
迷你埠驅動程式已停止處理要求。 例如,NDIS 稱為 MiniportResetEx 函 式。 |
NDIS 會針對此要求傳回下列其中一個狀態碼:
狀態碼 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
已成功釋放要求的佇列。 |
NDIS_STATUS_PENDING |
要求擱置完成。 NDIS 會在要求完成之後,將最終狀態代碼和結果傳遞給呼叫端的 OID 要求完成處理常式。 |
NDIS_STATUS_INVALID_PARAMETER |
佇列識別碼無效。 |
NDIS_STATUS_INVALID_LENGTH |
資訊緩衝區太短。 NDIS 會設定DATA。METHOD_INFORMATION。NDIS_OID_REQUEST結構中的BytesNeeded成員,到所需的緩衝區大小下限。 |
規格需求
版本 |
NDIS 6.20 和更新版本支援。 |
標頭 |
Ntddndis.h (包含 Ndis.h) |
另請參閱
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS