Udostępnij przez


OID_RECEIVE_FILTER_FREE_QUEUE

Sterowniki protokołu NDIS wystawiają żądania OID_RECEIVE_FILTER_FREE_QUEUE dotyczące ustawiania identyfikatora obiektu (OID) w celu zwolnienia kolejki odbierania.

Element InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_RECEIVE_QUEUE_FREE_PARAMETERS z identyfikatorem kolejki typu NDIS_RECEIVE_QUEUE_ID.

Uwagi

Żądanie zestawu identyfikatorów OID OID_RECEIVE_FILTER_FREE_QUEUE jest opcjonalne dla sterowników NDIS 6.20 i nowszych miniportów. W przypadku sterowników miniportów, które obsługują interfejs kolejki maszyn wirtualnych, jest obowiązkowy.

Po nadmiernym wystąpieniu problemów ze sterownikiem OID_RECEIVE_FILTER_ALLOCATE_QUEUE identyfikatorem OID w celu przydzielenia kolejki odbierania, wystawia OID_RECEIVE_FILTER_FREE_QUEUE identyfikator OID, aby zwolnić kolejkę odbierania.

Gdy usługa NDIS zażąda sterownika miniportu, aby zwolnić kolejkę odbierania maszyny wirtualnej VMQ, wykonaj następujące kroki:

  1. Karta sieciowa zatrzymuje transfer danych DMA w celu odbierania skojarzonych z kolejką odbierania, po czym kolejka musi wprowadzić stan zatrzymany DMA. Karta sieciowa prawdopodobnie zatrzymała działanie DMA po odebraniu żądania identyfikatora OID OID_RECEIVE_FILTER_CLEAR_FILTER w celu wyczyszczenia ostatniego filtru zestawu w kolejce odbierania.

  2. Sterownik miniportu generuje wskazanie stanu NDIS_STATUS_RECEIVE_QUEUE_STATE za pomocą QueueState elementu członkowskiego struktury NDIS_RECEIVE_QUEUE_STATE ustawionej na NdisReceiveQueueOperationalStateDmaStopped w celu powiadomienia NDIS, że transfer DMA został zatrzymany.

  3. Sterownik miniportu czeka na wszystkie wskazane pakiety odbierające, aby ta kolejka została zwrócona do sterownika miniportu.

  4. Sterownik miniportu zwalnia całą pamięć udostępnioną przydzieloną dla odbierania karty sieciowej, które są skojarzone z kolejką, wywołując NdisFreeSharedMemory.

  5. Sterownik miniportu kończy żądanie OID_RECEIVE_FILTER_FREE_QUEUE OID, aby zwolnić kolejkę odbierania.

Sterowniki miniportu nazywają funkcję NdisFreeSharedMemory, aby zwolnić pamięć udostępnioną dla kolejki. Jeśli sterownik miniportu przydzielił pamięć udostępnioną dla kolejki niezdefaultowej, sterownik zwalnia pamięć udostępnioną w kontekście identyfikatora OID OID_RECEIVE_FILTER_FREE_QUEUE podczas zwalniania kolejki. Sterowniki Miniport mają bezpłatną pamięć udostępnioną przydzieloną dla kolejki domyślnej w kontekście funkcji MiniportHaltEx.

Nadmierny sterownik musi zwolnić wszystkie filtry ustawione w kolejce, zanim zwolni kolejkę. Ponadto sterownik overlying musi zwolnić wszystkie kolejki odbierania przydzielone na karcie sieciowej przed wywołaniem NdisCloseAdapterEx funkcji, aby zamknąć powiązanie z kartą sieciową. Usługa NDIS zwalnia wszystkie kolejki przydzielone na karcie sieciowej przed wywołaniem funkcji miniport sterownika MiniportEx.

Kody stanu powrotu

Funkcjaminiportu sterownikaMiniportOidRequest zwraca jedną z następujących wartości dla tego żądania:

Termin Opis

NDIS_STATUS_SUCCESS

Sterownik miniportu zakończył żądanie pomyślnie.

NDIS_STATUS_PENDING

Sterownik miniportu zakończy żądanie asynchronicznie. Po zakończeniu całego przetwarzania przez sterownik miniportu żądanie musi zakończyć się powodzeniem przez wywołanie funkcji NdisMOidRequestComplete, przekazując NDIS_STATUS_SUCCESS dla parametru stanu.

NDIS_STATUS_NOT_ACCEPTED

Sterownik miniportu resetuje się.

NDIS_STATUS_REQUEST_ABORTED

Sterownik miniportu przestał przetwarzać żądanie. Na przykład NDIS nosi nazwę funkcji MiniportResetEx.

Usługa NDIS zwraca jeden z następujących kodów stanu dla tego żądania:

Kod stanu Opis

NDIS_STATUS_SUCCESS

Żądana kolejka została pomyślnie zwolniona.

NDIS_STATUS_PENDING

Żądanie oczekuje na ukończenie. Usługa NDIS przekaże końcowy kod stanu i wyniki do procedury obsługi ukończenia żądania OID dla elementu wywołującego po zakończeniu żądania.

NDIS_STATUS_INVALID_PARAMETER

Identyfikator kolejki jest nieprawidłowy.

NDIS_STATUS_INVALID_LENGTH

Bufor informacyjny jest zbyt krótki. Usługa NDIS ustawia DATA.METHOD_INFORMATION.składowej bytesNeeded w strukturze NDIS_OID_REQUEST do minimalnego wymaganego rozmiaru buforu.

Wymagania

Wersja

Obsługiwane w usłudze NDIS 6.20 lub nowszym.

Nagłówek

Ntddndis.h (m.in. Ndis.h)

Zobacz też

MiniportHaltEx

NDIS_OID_REQUEST

NDIS_RECEIVE_QUEUE_FREE_PARAMETERS

NDIS_STATUS_RECEIVE_QUEUE_STATE

NdisCloseAdapterEx

NdisFreeSharedMemory

OID_RECEIVE_FILTER_ALLOCATE_QUEUE