Sdílet prostřednictvím


OID_RECEIVE_FILTER_FREE_QUEUE

NDIS protocol drivers issue object identifier (OID) set requests of OID_RECEIVE_FILTER_FREE_QUEUE to free a receive queue.

InformationBuffer člen struktury NDIS_OID_REQUEST obsahuje ukazatel na strukturu NDIS_RECEIVE_QUEUE_FREE_PARAMETERS s identifikátorem fronty typu NDIS_RECEIVE_QUEUE_ID.

Poznámky

Požadavek sady OID pro OID_RECEIVE_FILTER_FREE_QUEUE je volitelný pro ovladače miniportu NDIS 6.20 a novější. Pro ovladače miniportu, které podporují rozhraní fronty virtuálních počítačů, je povinné.

Poté, co ovladač nadlimitně vydá identifikátor OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID pro přidělení fronty příjmu, vydá OID_RECEIVE_FILTER_FREE_QUEUE identifikátor OID pro uvolnění příjmové fronty.

Když NDIS požádá ovladač miniportu o uvolnění fronty příjmu VMQ, postupujte takto:

  1. Síťový adaptér zastaví přenos dat DMA pro příjem vyrovnávacích pamětí přidružených k frontě příjmu, po které musí fronta zadat stav DMA Zastaveno. Síťový adaptér pravděpodobně zastavil aktivitu DMA, když přijal požadavek OID_RECEIVE_FILTER_CLEAR_FILTER identifikátoru, aby vymaže poslední nastavený filtr ve frontě příjmu.

  2. Ovladač miniportu vygeneruje NDIS_STATUS_RECEIVE_QUEUE_STATE stav s QueueState členem struktury NDIS_RECEIVE_QUEUE_STATE nastavenou na NdisReceiveQueueOperationalStateDmaStopped oznámit NDIS, že byl přenos DMA zastaven.

  3. Ovladač miniportu čeká na vrácení všech uvedených paketů pro příjem této fronty do ovladače miniportu.

  4. Ovladač miniportu uvolní veškerou sdílenou paměť přidělenou pro vyrovnávací paměti síťového adaptéru, které jsou přidruženy k frontě voláním NdisFreeSharedMemory.

  5. Ovladač miniportu dokončí požadavek OID_RECEIVE_FILTER_FREE_QUEUE OID, aby uvolnil frontu pro příjem.

Ovladače miniportu volají funkci NdisFreeSharedMemory pro uvolnění sdílené paměti pro frontu. Pokud ovladač miniportu přidělil sdílenou paměť pro nedefaultní frontu, ovladač uvolní sdílenou paměť v kontextu OID_RECEIVE_FILTER_FREE_QUEUE OID při uvolnění fronty. Ovladače miniportu uvolní sdílenou paměť, kterou přidělují výchozí frontě v kontextu funkce MiniportHaltEx.

Nadlimitní ovladač musí uvolnit všechny filtry nastavené ve frontě, než uvolní frontu. Příliš velký ovladač také musí uvolnit všechny fronty příjmu, které přidělil na síťovém adaptéru předtím, než zavolá NdisCloseAdapterEx funkci zavřít vazbu k síťovému adaptéru. NDIS uvolní všechny fronty, které jsou přiděleny na síťovém adaptéru před voláním miniport ovladače MiniportHaltEx funkce.

Návratové stavové kódy

Funkce miniportu MiniportOidRequest vrátí jednu z následujících hodnot pro tento požadavek:

Semestr Popis

NDIS_STATUS_SUCCESS

Ovladač miniportu žádost úspěšně dokončil.

NDIS_STATUS_PENDING

Ovladač miniportu dokončí požadavek asynchronně. Po dokončení veškerého zpracování ovladače miniportu musí být požadavek úspěšný voláním funkce NdisMOidRequestComplete a předáním NDIS_STATUS_SUCCESS pro parametr Status.

NDIS_STATUS_NOT_ACCEPTED

Ovladač miniportu se resetuje.

NDIS_STATUS_REQUEST_ABORTED

Ovladač miniportu zastavil zpracování požadavku. Například NDIS volal MiniportResetEx funkce.

NDIS vrátí jeden z následujících stavových kódů pro tento požadavek:

Stavový kód Popis

NDIS_STATUS_SUCCESS

Požadovaná fronta byla úspěšně uvolněna.

NDIS_STATUS_PENDING

Požadavek čeká na dokončení. NDIS předá konečný stavový kód a výsledky obslužné rutině dokončení požadavku OID volajícímu po dokončení požadavku.

NDIS_STATUS_INVALID_PARAMETER

Identifikátor fronty je neplatný.

NDIS_STATUS_INVALID_LENGTH

Vyrovnávací paměť informací je příliš krátká. Rozhraní NDIS nastaví DATA .METHOD_INFORMATION.bytesNeeded člen ve struktuře NDIS_OID_REQUEST na minimální požadovanou velikost vyrovnávací paměti.

Požadavky

Verze

Podporováno v NDIS 6.20 a novějších verzích.

Záhlaví

Ntddndis.h (včetně Ndis.h)

Viz také

MiniportHaltEx

NDIS_OID_REQUEST

NDIS_RECEIVE_QUEUE_FREE_PARAMETERS

NDIS_STATUS_RECEIVE_QUEUE_STATE

NdisCloseAdapterEx

NdisFreeSharedMemory

OID_RECEIVE_FILTER_ALLOCATE_QUEUE