Udostępnij przez


Wymagania dotyczące informacji o wersji sterowników NDIS

Struktury NDIS udostępniające informacje o wersji mają element członkowski nagłówka zdefiniowany jako struktura NDIS_OBJECT_HEADER i sterowniki NDIS muszą zapewnić obsługę takich informacji o wersji.

Usługa NDIS może obsługiwać sterowniki obsługujące wyższą lub niższą wersję NDIS niż bieżącą wersję usługi NDIS (czyli wersja usługi NDIS obsługiwana w wersji systemu operacyjnego, na którym jest uruchomiony komputer). Ponadto zarejestrowana wersja NDIS (czyli wersja zgłoszona przez sterownik podczas inicjalizacji) sterownika może być niższa niż najwyższa wersja, którą ten sterownik obsługuje. Na przykład sterownik NDIS 5.1 lub sterownik NDIS 6.1 może działać w wersji systemu operacyjnego z uruchomioną usługą NDIS 6.0. Sterownik NDIS 5.1 po prostu rejestruje się jako sterownik NDIS 5.1 podczas inicjowania. Jednak sterownik NDIS 6.1 musi sprawdzić bieżącą wersję NDIS i musi zarejestrować się jako sterownik obsługujący najwyższy poziom sieci NDIS, który jest dostępny (w tym przykładzie NDIS 6.0). Aby uzyskać więcej informacji na temat uzyskiwania bieżącej wersji NDIS, zobacz Uzyskiwanie wersji NDIS.

Uwaga Sterownik nie jest wymagany do obsługi wszystkich funkcji w późniejszej wersji struktury. Na przykład sterownik miniportu może utworzyć strukturę wersji 2 i podać wartości, które są odpowiednie dla struktury wersji 1.

Aby uzyskać dostęp do składników w strukturach z informacjami o wersji, sterowniki NDIS muszą wykonać następującą procedurę:

  • Sprawdź członków Header.Revision i Header.Size przed uzyskaniem dostępu do jakichkolwiek elementów w strukturze.

  • W przypadku wcześniejszych struktur (czyli struktur, które mają niższy numer poprawki niż numer skojarzony z wersją NDIS obsługiwaną przez sterownik):

    • Sterownik musi sprawdzić, czy wartość Header.Size jest poprawna dla wartości Header.Revision. Na przykład wartość NDIS_SIZEOF_Xxx_REVISION_1 jest poprawna dla Xxx_REVISION_1, ale jest zbyt mała dla Xxx_REVISION_2.
    • Wartość Header.Size musi być równa lub większa niż NDIS_SIZEOF_Xxx_REVISION_Nn (gdzie Nn jest numerem poprawki struktury używanej przez sterownik), a sterownik musi prawidłowo obsługiwać informacje w strukturze zgodnie z potrzebami tej poprawki.
  • W przypadku nowszych struktur wersji (czyli struktur, które mają wyższy numer poprawki niż liczba skojarzona z wersją NDIS obsługiwaną przez sterownik), sterownik może używać struktury tak, jakby była to starsza wersja struktury. Wyższa struktura wersji jest zawsze zgodna ze starszą wersją.

  • Sterowniki muszą używać poprawnej wersji struktury dla wersji zarejestrowanej sterownika NDIS. Na przykład sterownik NDIS 6.1 musi zgłosić możliwości odciążania w strukturach NDIS_OFFLOAD, przez ustawienie elementów w strukturze NDIS_OBJECT_HEADER, aby wskazać NDIS_OFFLOAD_REVISION_2. Sterownik nie musi jednak obsługiwać wszystkich funkcji zawartych w NDIS_OFFLOAD_REVISION_2.

  • Sterownik, który pomyślnie obsługuje żądanie ustawienia OID, musi ustawić członka SupportedRevision w strukturze NDIS_OID_REQUEST po powrocie z żądania ustawienia OID. Członek SupportedRevision powiadamia inicjatora żądania poprawki obsługiwanej przez sterownik. Na przykład sterownik miniportu może utworzyć strukturę Xxx_REVISION_2, dostarczyć wartości odpowiednie dla struktury Xxx_REVISION_1 i wypełnić resztę struktury zerami. Sterownik miniportu zgłosi Xxx_REVISION_1 w elemencie SupportedRevision. W takim przypadku sterownik protokołu, który może obsługiwać Xxx_REVISION_2, będzie używał informacji dotyczącymi Xxx_REVISION_1, które były obsługiwane przez sterownik miniportu.

  • Aby określić, jakie informacje zostały pomyślnie obsłużone przez podstawowy sterownik, nadmierne sterowniki, które wystawiają żądania OID, muszą sprawdzić wartość w SupportedRevision elementu członkowskiego w strukturze NDIS_OID_REQUEST po zwracaniu żądania OID.

Omówienie wersji NDIS

Określanie Informacji o Wersji Usługi NDIS