Udostępnij przez


OID_RECEIVE_FILTER_SET_FILTER

Nadmierny sterownik wystawia żądanie metody OID OID_RECEIVE_FILTER_SET_FILTER w celu ustawienia filtru na karcie sieciowej.

Element członkowski InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do buforu przydzielonego przez obiekt wywołujący. Ten bufor jest sformatowany tak, aby zawierał następujące elementy:

Po pomyślnym powrocie z żądania metody OID element członkowski InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_RECEIVE_FILTER_PARAMETERS. Jeśli sterownik nadmiernie tworzy nowy filtr odbierania, usługa NDIS aktualizuje tę strukturę przy użyciu nowego identyfikatora filtru.

Uwagi

Filtry odbierania NDIS są używane w następujących interfejsach NDIS:

Żądanie metody OID OID_RECEIVE_FILTER_SET_FILTER jest obowiązkowe dla sterowników miniportu, które obsługują łączenie pakietów NDIS, SR-IOV lub interfejs VMQ.

Nadmierny sterownik inicjuje strukturę NDIS_RECEIVE_FILTER_PARAMETERS z żądaną konfiguracją filtru. NDIS przypisuje identyfikator filtru w FilterId elementu członkowskiego struktury NDIS_RECEIVE_FILTER_PARAMETERS i przekazuje żądanie metody do bazowego sterownika miniportu.

Każdy filtr ustawiony w kolejce odbierania ma unikatowy identyfikator filtru dla karty sieciowej. Oznacza to, że identyfikatory filtrów nie są duplikowane w różnych kolejkach, którymi zarządza karta sieciowa. Gdy usługa NDIS odbiera żądanie identyfikatora OID w celu ustawienia filtru w kolejce odbierania, weryfikuje parametry filtru. Po przydzieleniu niezbędnych zasobów i identyfikatora filtru usługa NDIS przesyła żądanie identyfikatora OID do bazowej karty sieciowej. Jeśli karta sieciowa może pomyślnie przydzielić niezbędne zasoby oprogramowania i sprzętu dla filtru, kończy żądanie OID ze stanem powrotu NDIS_STATUS_SUCCESS.

Uwaga Począwszy od NDIS 6.30, filtr odbierania pakietów jest obsługiwany tylko w domyślnej kolejce odbierania karty sieciowej. Ta kolejka odbierania ma identyfikator NDIS_DEFAULT_RECEIVE_QUEUE_ID.

Sterownik miniportu musi zachować identyfikatory filtrów dla przydzielonych filtrów odbierania. Usługa NDIS używa identyfikatora filtru w późniejszych żądaniach OID, aby zmienić parametry filtru odbierania lub wyczyścić filtr odbierania.

Gdy sterownik miniportu otrzyma żądanie OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE i ma filtry ustawione w kolejce, kolejka jest w stanie Uruchomiona. W tym stanie sterownik miniportu może uruchomić wskazania pakietów w kolejce, wywołując NdisMIndicateReceiveNetBufferLists.

Dodatkowe wytyczne dotyczące interfejsu SR-IOV

Następujące kwestie dotyczą sterowników miniportów, które obsługują interfejs SR-IOV:

  • W przypadku interfejsu SR-IOV kolejka odbierania jest tworzona na domyślnym lub niezdefinicyjnym porcie wirtualnym (VPort).

    Uwaga Począwszy od systemu Windows Server 2012, interfejs SR-IOV obsługuje tylko domyślną kolejkę odbierania VPort.

    Po przydzieleniu SR-IOV VPort za pośrednictwem żądania zestawu identyfikatorów OID OID_NIC_SWITCH_CREATE_VPORTsterowniki mogą ustawiać filtry na VPort z żądaniami identyfikatora OID OID_RECEIVE_FILTER_SET_FILTER.

    Uwaga Tylko sterownik nadmiernie przydzielony VPort może ustawić filtr dla tego VPort.

  • Ponieważ domyślny port VPort zawsze istnieje, nadmierne sterowniki zawsze mogą ustawić filtr dla domyślnego wirtualnegoportu.

  • Po utworzeniu wirtualnegoportu nie są ustawione żadne filtry odbierania. W takim przypadku sterownik miniportu nie może wskazywać żadnych pakietów odbieranych na tym VPort przed odebraniem przez sterownik miniportu żądania identyfikatora OID OID_RECEIVE_FILTER_SET_FILTER dla VPort. Po wydaniu tego żądania identyfikatora OID sterownik miniportu może wskazywać pakiety na tym VPort.

    Uwaga Jeśli sterownik miniportu wskazuje pakiety na VPort podczas przetwarzania żądania identyfikatora OID OID_RECEIVE_FILTER_SET_FILTER, musi ukończyć żądanie OID i zwrócić kod stanu NDIS_STATUS_SUCCESS.

Dodatkowe wytyczne dotyczące interfejsu VMQ

Następujące kwestie dotyczą sterowników miniportów, które obsługują interfejs VMQ:

  • Po przydzieleniu kolejki odbierania maszyny wirtualnej za pośrednictwem sterowników można ustawić filtry w kolejce odbierania z żądaniami OID OID_RECEIVE_FILTER_SET_FILTER.

    Uwaga Tylko sterownik protokołu, który przydzielił kolejkę odbierania, może ustawić filtr w tej kolejce.

  • Ponieważ kolejka domyślna zawsze istnieje, nadmierne sterowniki zawsze mogą ustawić filtr w kolejce domyślnej. Jeśli karta sieciowa obsługuje kolejkę upuszczania, nadmierne sterowniki mogą ustawić filtr w kolejce upuszczania.

    Nadmierne sterowniki nie są właścicielami kolejek domyślnych ani upuszczania. W związku z tym wszystkie sterowniki protokołu powiązane z kartą sieciową używają kolejki domyślnej lub upuszczania.

  • Po utworzeniu kolejki odbierania nie są ustawione żadne filtry odbierania. W takim przypadku sterownik miniportu nie może wskazywać żadnych pakietów odbieranych w tej kolejce odbierania, zanim sterownik miniportu otrzyma żądanie OID OID_RECEIVE_FILTER_SET_FILTER dla kolejki odbierania. Po wydaniu tego żądania OID sterownik miniportu może wskazywać pakiety w tej kolejce odbierania.

    Uwaga Jeśli sterownik miniportu wskazuje pakiety w kolejce podczas przetwarzania żądania identyfikatora OID OID_RECEIVE_FILTER_SET_FILTER, musi ukończyć żądanie OID i zwrócić kod stanu NDIS_STATUS_SUCCESS.

Kody stanu powrotu

Sterownik miniportu zwraca jeden z następujących kodów stanu dla żądania metody OID OID_RECEIVE_FILTER_SET_FILTER:

NDIS_STATUS_SUCCESS
Filtr został pomyślnie ustawiony w kolejce. Bufor informacji zawiera zaktualizowaną strukturę NDIS_RECEIVE_FILTER_PARAMETERS.

NDIS_STATUS_PENDING
Żądanie oczekuje na ukończenie. Końcowy kod stanu i wyniki zostaną przekazane do procedury obsługi uzupełniania żądań OID obiektu wywołującego.

NDIS_STATUS_INVALID_PARAMETER
Co najmniej jeden z parametrów, które podano przez sterownik nadmiernego instalowania, jest nieprawidłowy.

NDIS_STATUS_INVALID_LENGTH
Bufor informacyjny był zbyt krótki. Usługa NDIS ustawia DATA. METHOD_INFORMATION. BajtyNowe składowe w strukturze NDIS_OID_REQUEST do minimalnego wymaganego rozmiaru buforu.

NDIS_STATUS_NOT_SUPPORTED
Wersja sterownika miniportu NDIS jest starszą wersją niż 6.20.

NDIS_STATUS_FAILURE
Żądanie nie powiodło się z innych powodów.

Wymagania

Wersja

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

Nagłówek

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

Zobacz też

NdisMIndicateReceiveNetBufferLists

NDIS_OID_REQUEST

NDIS_RECEIVE_FILTER_PARAMETERS

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_FILTER_ID

OID_NIC_SWITCH_CREATE_VPORT

OID_RECEIVE_FILTER_CLEAR_FILTER

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE