Udostępnij przez


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

Nadmierne sterowniki wystawiają żądania metody identyfikatora obiektu (OID) OID_RECEIVE_FILTER_ALLOCATE_QUEUE w celu przydzielenia kolejki, która ma początkowy zestaw parametrów konfiguracji.

Element członkowski InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_RECEIVE_QUEUE_PARAMETERS. Po pomyślnym powrocie z żądania metody OID InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_RECEIVE_QUEUE_PARAMETERS, która ma nowy identyfikator kolejki.

Uwagi

Żądanie metody OID OID_RECEIVE_FILTER_ALLOCATE_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 (VMQ).

Nadmierny sterownik inicjuje strukturę NDIS_RECEIVE_QUEUE_PARAMETERS z żądaną konfiguracją kolejki. Usługa NDIS przypisuje identyfikator kolejki w QueueId składowej struktury NDIS_RECEIVE_QUEUE_PARAMETERS i przekazuje żądanie metody do sterownika miniportu.

Uwaga sterownik nadmiernie może ustawiać flagi NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION i NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED w Flags składowej struktury NDIS_RECEIVE_QUEUE_PARAMETERS. Inne flagi nie są używane do alokacji kolejki.

Po wydaniu przez sterownik miniportu żądania identyfikatora OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE i pomyślnym dojściu do kolejki jest w stanie Wstrzymanie.

Sterownik overlying musi użyć identyfikatora kolejki, który NDIS udostępnia w kolejnych żądaniach OID, na przykład, aby zmodyfikować parametry kolejki lub zwolnić kolejkę. Identyfikator kolejki jest również uwzględniany w danych poza pasmem (OOB) we wszystkich strukturach NET_BUFFER_LIST skojarzonych z kolejką. Sterowniki używają makra NET_BUFFER_LIST_RECEIVE_QUEUE_ID do pobierania identyfikatora kolejki w strukturze NET_BUFFER_LIST.

Gdy usługa NDIS odbiera żądanie identyfikatora OID w celu przydzielenia kolejki odbierania, weryfikuje parametry kolejki. Gdy usługa NDIS przydziela niezbędne zasoby i identyfikator kolejki, przesyła żądanie OID do bazowego sterownika miniportu. Identyfikator kolejki jest unikatowy dla skojarzonej karty sieciowej.

Jeśli sterownik miniportu może pomyślnie przydzielić niezbędne zasoby oprogramowania i sprzętu dla kolejki odbierania, ukończy żądanie OID, zwracając NDIS_STATUS_SUCCESS.

Sterownik miniportu musi zachować identyfikatory kolejki dla przydzielonych kolejek odbierania. Usługa NDIS używa identyfikatora kolejki odbierania dla kolejnych wywołań sterownika miniportu w celu ustawienia filtru odbierania w kolejce odbierania, zmiany parametrów kolejki odbierania lub zwolnienia kolejki odbierania.

Gdy sterownik nadmiernie przydziela co najmniej jedną kolejkę odbierania i opcjonalnie ustawia początkowe filtry, musi wydać OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE ustawić żądania OID, aby powiadomić sterownik miniportu, że alokacja jest ukończona dla bieżącej partii kolejek odbierania.

Sterownik miniportu nie może przechowywać żadnych pakietów w kolejce odbierania, jeśli nie ma żadnych filtrów ustawionych w tej kolejce. Jeśli kolejka nigdy nie miała żadnych filtrów ustawionych lub wszystkie filtry zostały wyczyszczone, kolejka powinna być pusta i wszystkie pakiety powinny zostać odrzucone. Oznacza to, że pakiety nie są wskazywane na stos sterownika lub przechowywane w kolejce.

Nadmierne używanie sterowników OID żądań OID_RECEIVE_FILTER_FREE_QUEUE do zwalniania kolejek, które przydzielają.

Kody stanu powrotu

Sterownik NDIS lub miniport zwraca jeden z następujących kodów stanu dla żądania metody OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE.

Kod stanu Opis

NDIS_STATUS_SUCCESS

Kolejka została pomyślnie przydzielona. Bufor informacji zawiera zaktualizowaną strukturę NDIS_RECEIVE_QUEUE_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 podanych parametrów sterownika nadmiernego jest nieprawidłowy.

NDIS_STATUS_INVALID_LENGTH

Bufor informacyjny był zbyt krótki. NDIS ustaw DATA.METHOD_INFORMATION.składowej bytesNeeded w strukturze NDIS_OID_REQUEST do minimalnego wymaganego rozmiaru buforu.

NDIS_STATUS_NOT_SUPPORTED

Wersja sterownika miniportu NDIS jest starsza niż wersja 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ż

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS