NDIS 通訊協定驅動程式發出OID_RECEIVE_FILTER_FREE_QUEUE的物件標識碼 (OID) 集合要求,以釋放接收佇列。
InformationBufferNDIS_OID_REQUEST 結構的成員包含具有類型為 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 狀態指示,並將 QueueStateNDIS_RECEIVE_QUEUE_STATE 成員設定為 NdisReceiveQueueOperationalStateDmaStopped,以通知 NDIS 已停止 DMA 傳輸。
迷你埠驅動程式會等候該佇列傳回至迷你埠驅動程式的所有指示接收封包。
迷你埠驅動程式會呼叫 NdisFreeSharedMemory,釋放它為網路適配器接收緩衝區配置的所有共用記憶體。
迷你埠驅動程式會完成OID_RECEIVE_FILTER_FREE_QUEUE OID 要求,以釋放接收佇列。
迷你埠驅動程式會呼叫 NdisFreeSharedMemory 函式,以釋放佇列的共用記憶體。 如果迷你埠驅動程式為非預設佇列配置共用記憶體,則驅動程式會在釋放佇列時,在 OID_RECEIVE_FILTER_FREE_QUEUE OID 的內容中釋放共用記憶體。 Miniport 驅動程式會釋放共用記憶體,這些記憶體會配置給 MiniportHaltEx 函式內容中的預設佇列。
過度部署的驅動程式必須先釋放它在佇列上設定的所有篩選,才能釋放佇列。 此外,過度配置驅動程式必須先釋放它在網路適配器上配置的所有接收佇列,才能呼叫 NdisCloseAdapterEx 函式,以關閉與網路適配器的系結。 NDIS 會在呼叫 miniport 驅動程式的 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。BytesNeeded 成員 NDIS_OID_REQUEST 結構中所需的緩衝區大小下限。 |
要求
版本 |
NDIS 6.20 和更新版本支援。 |
頁眉 |
Ntddndis.h (包括 Ndis.h) |
另請參閱
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS