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:
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.
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.
Ovladač miniportu čeká na vrácení všech uvedených paketů pro příjem této fronty do ovladače miniportu.
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.
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é
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS