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.
Dla każdej kolejki karta sieciowa musi obsługiwać następujący zestaw stanów operacyjnych:
niezdefiniowane
Kolejka nie jest przydzielona. Aby przydzielić kolejkę, sterownik warstwy wyższej wysyła żądanie OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE.
Przydzielone
Początkowym stanem kolejki jest stan Przydzielony. Gdy kolejka znajduje się w stanie przydzielonym, sterownik nadrzędny ustawia zazwyczaj filtry w kolejce za pomocą identyfikatora OID_RECEIVE_FILTER_SET_FILTER OID lub kończy alokację kolejki za pomocą żądania OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID.
zestaw
W stanie Ustaw kolejka ma co najmniej jeden filtr przydzielony, ale sterownik nadrzędny nie wysłał OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.
uruchomiona
W stanie Uruchomiony kolejka ma ustawione filtry, alokacja kolejki jest ukończona, a karta miniportu wskazuje pakiety odbierane dla tej kolejki.
Wstrzymano
W stanie Wstrzymana karta sieciowa nie wskazuje odebranych danych sieciowych dla kolejki. Nie ustawiono filtrów w kolejce przed żądaniem identyfikatora OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE lub wszystkie filtry ustawione w kolejce zostały wyczyszczone za pomocą żądania identyfikatora OID OID_RECEIVE_FILTER_CLEAR_FILTER.
Zatrzymana usługa DMA
W stanie Zatrzymano DMA sterownik miniportu otrzymał żądanie OID_RECEIVE_FILTER_FREE_QUEUE. Kiedy DMA zostaje zatrzymane i sterownik zgłasza wskaźnik stanu zatrzymania DMA (z NDIS_STATUS_RECEIVE_QUEUE_STATE), sterownik przechodzi w stan zwalniania zasobów.
zwalnianie
W stanie Zwalnianie sterownik miniportu wykonuje operacje konieczne do zatrzymania operacji wysyłania i odbierania związanych z kolejką, a następnie zwalnia powiązane zasoby. Po zakończeniu wszystkich zaległych operacji odbioru kolejka zostaje usunięta, a kolejka staje się niezdefiniowana.
W poniższej tabeli nagłówki przedstawiają stany kolejki. Główne zdarzenia są wyświetlane w pierwszej kolumnie. Pozostałe wpisy w tabeli określają następny stan, w który kolejka wchodzi, gdy w stanie wystąpi zdarzenie. Puste wpisy reprezentują nieprawidłowe kombinacje zdarzeń/stanów.
| Zdarzenie \ Stan | Niezdefiniowane | Przydzielone | Ustawienie | Bieganie | Wstrzymano | Zatrzymaj DMA | Zwalnianie |
|---|---|---|---|---|---|---|---|
OID_RECEIVE_FILTER_ALLOCATE_QUEUE — metoda (set) |
Przydzielone |
||||||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS — żądanie metody (query) |
Przydzielone |
Ustawienie |
Bieganie |
Wstrzymano |
|||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS — ustawienie żądania |
Przydzielone |
Ustawienie |
Bieganie |
Wstrzymano |
|||
OID_RECEIVE_FILTER_SET_FILTER — żądanie metody (ustawienie) |
Ustawienie |
Ustawienie |
Bieganie |
Bieganie |
|||
OID_RECEIVE_FILTER_CLEAR_FILTER — ustawienie żądania (ostatni filtr) |
Przydzielone |
Wstrzymano |
|||||
OID_RECEIVE_FILTER_CLEAR_FILTER — ustawienie żądania (nie ostatniego filtru) |
Ustawienie |
Bieganie |
|||||
OID_RECEIVE_FILTER_ENUM_FILTERS — metoda (żądanie) |
Przydzielone |
Ustawienie |
Bieganie |
Wstrzymano |
|||
OID_RECEIVE_FILTER_PARAMETERS – żądanie metody (zapytanie) |
Ustawienie |
Bieganie |
|||||
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE — żądanie metody (set) |
Wstrzymano |
Bieganie |
|||||
Odbieranie pakietu |
Bieganie |
||||||
OID_RECEIVE_FILTER_FREE_QUEUE ustawić żądanie |
Zatrzymaj DMA |
Zatrzymaj DMA |
|||||
DMA jest zatrzymany i wskazanie statusu NDIS_STATUS_RECEIVE_QUEUE_STATE zostało wysłane (DMA prawdopodobnie został już zatrzymany w stanie Przydzielone lub Wstrzymane) Uwaga. |
Zwalnianie |
||||||
Wszystkie wskazania odbioru są kompletne, a zasoby kolejki są zwalniane |
Niezdefiniowane |
Nuta Zdarzenia wymienione w poprzedniej tabeli zawierają niektóre zdarzenia pomocnicze, które nie powodują zmiany stanu. Te zdarzenia pomocnicze znajdują się w tabeli, aby określić stany, w których te zdarzenia są prawidłowe.
Zdarzenia kolejki podstawowej są definiowane w następujący sposób:
OID_RECEIVE_FILTER_ALLOCATE_QUEUE — żądanie metody (ustawienia)
Nadrzędny sterownik przydziela kolejkę. Aby uzyskać więcej informacji na temat przydzielania kolejek, zobacz Przydzielanie i zwalnianie kolejek maszyn wirtualnych.
OID_RECEIVE_FILTER_SET_FILTER — żądanie metody (ustawiania)
Sterownik nadrzędny ustawił filtr w kolejce. Jeśli nadrzędny sterownik nie wysłał OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID, kolejka jest w stanie Ustawienia. W przeciwnym razie kolejka jest w stanie 'Działa'. Aby uzyskać więcej informacji na temat ustawiania filtrów w kolejkach, zobacz Ustawianie i czyszczenie filtrów VMQ.
OID_RECEIVE_FILTER_CLEAR_FILTER — ustawianie żądania
Nadrzędny sterownik usunął filtr w kolejce. Jeśli ostatni filtr został wyczyszczony w uruchomionej kolejce, można zatrzymać DMA; wskazania odbioru są zatrzymywane, a kolejka powinna zostać wyczyszczona z odebranych danych, jeśli takowe istnieją. Aby uzyskać więcej informacji na temat czyszczenia filtrów w kolejkach, zobacz Ustawianie i czyszczenie filtrów VMQ.
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE — żądanie metody (ustawienie)
Nadrzędny sterownik dokonał alokacji kolejki. Jeśli w kolejce są ustawione filtry, jest w stanie Działania i może zostać rozpoczęte odbieranie wskazań. Aby uzyskać więcej informacji na temat zakończenia przydzielania kolejek, zobacz Przydzielanie i zwalnianie kolejek maszyn wirtualnych.
Odbieranie pakietu
Sterownik miniportu może wskazywać tylko pakiety odebrane dla kolejki, która znajduje się w stanie Działania. Aby uzyskać więcej informacji na temat wskazywania odebranych danych dla kolejek, zobacz VmQ Send and Receive Operations (Operacje wysyłania i odbierania maszyn wirtualnych VMQ).
OID_RECEIVE_FILTER_FREE_QUEUE ustawić żądanie.
Nadrzędny sterownik zwolnił kolejkę. Sterownik wykazuje status zatrzymania DMA (z NDIS_STATUS_RECEIVE_QUEUE_STATE), sterownik przechodzi w stan uwalniania zasobów. Gdy wszystkie zaległe wskazania odbioru zostaną ukończone, a zasoby kolejki zostaną zwolnione, kolejka staje się niezdefiniowana.