Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
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.
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.
Sterownik miniportu czeka na wszystkie wskazane pakiety odbierające, aby ta kolejka została zwrócona do sterownika miniportu.
Sterownik miniportu zwalnia całą pamięć udostępnioną przydzieloną dla odbierania karty sieciowej, które są skojarzone z kolejką, wywołując NdisFreeSharedMemory.
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ż
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS