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.
Aby zwolnić kolejkę odbierania, nadrzędny sterownik wystawia żądanie ustawienia identyfikatora OID_RECEIVE_FILTER_FREE_QUEUE. Element InformationBuffer struktury NDIS_OID_REQUEST zawiera wskaźnik do struktury NDIS_RECEIVE_QUEUE_FREE_PARAMETERS z identyfikatorem kolejki typu NDIS_RECEIVE_QUEUE_ID.
OID_RECEIVE_FILTER_FREE_QUEUE zwalnia kolejkę odbierania, którą nadległy sterownik przydzielił, używając identyfikatora OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID. Aby uzyskać więcej informacji na temat przydzielania kolejki odbiorczej, zobacz Przydzielanie kolejki maszyny wirtualnej.
Uwaga Kolejka domyślna zawierająca identyfikator kolejki NDIS_DEFAULT_RECEIVE_QUEUE_IDjest zawsze przydzielana i nie może zostać zwolniona.
Sterownik nadrzędny musi zwolnić wszystkie filtry ustawione w kolejce, zanim zwolni kolejkę. Ponadto nadrzędny sterownik musi zwolnić wszystkie kolejki odbierania przydzielone na karcie sieciowej przed wywołaniem funkcji NdisCloseAdapterEx, aby zamknąć powiązanie z tą kartą. Usługa NDIS zwalnia wszystkie kolejki przydzielone na karcie sieciowej, zanim wywoła funkcję sterownika miniportu MiniportHaltEx.
Gdy sterownik miniportu odbiera żądanie zwolnienia kolejki, wykonuje następujące czynności:
Należy natychmiast zatrzymać DMA do zasobów pamięci udostępnionej, które są powiązane z kolejką.
Generuje wskazanie stanu, które wskazuje, że DMA jest zatrzymana.
Czeka na zwrócenie wszystkich nierozwiązanych struktur NET_BUFFER_LIST, które są skojarzone z kolejką.
Zwalnia pamięć współdzieloną i powiązane zasoby sprzętowe.
Gdy sterownik miniportu odbiera żądanie ustawienia OID_RECEIVE_FILTER_FREE_QUEUE, kolejka musi wprowadzić stan Zatrzymania DMA, zatrzymuje DMA w kolejce i sterownik miniportu musi wskazać zmianę stanu, używając wskazania stanu NDIS_STATUS_RECEIVE_QUEUE_STATE. Aby uzyskać więcej informacji na temat stanów kolejki, zobacz Queue States and Operations.
Po wydaniu przez sterownik miniportu indykacji stanu NDIS_STATUS_RECEIVE_QUEUE_STATE, musi poczekać na ukończenie wszystkich oczekujących indykacji odbioru, zanim będzie mógł zwolnić skojarzoną pamięć udostępnioną. Aby uzyskać więcej informacji na temat zwalniania pamięci udostępnionej, zobacz Alokacji zasobów pamięci udostępnionej.