Поделиться через


Требования к сведениям о версии для драйверов NDIS

Структуры NDIS, предоставляющие сведения о версии, имеют элемент Header , который определен как структура NDIS_OBJECT_HEADER , а драйверы NDIS должны обеспечивать поддержку таких сведений о версии.

NDIS может поддерживать драйверы, которые поддерживают более высокую или меньшую версию NDIS, чем текущая версия NDIS (то есть версия NDIS, поддерживаемая в версии операционной системы, на котором работает компьютер). Кроме того, зарегистрированная версия NDIS (т. е. версия, которую драйвер сообщил во время инициализации) драйвера может быть ниже, чем самая высокая версия, которую поддерживает драйвер. Например, драйвер NDIS 5.1 или драйвер NDIS 6.1 может работать в версии операционной системы под управлением NDIS 6.0. Драйвер NDIS 5.1 просто регистрируется как драйвер NDIS 5.1 во время инициализации. Однако драйвер NDIS 6.1 должен проверка текущей версии NDIS и должен регистрироваться как драйвер, поддерживающий самый высокий доступный уровень NDIS (в этом примере NDIS 6.0). Дополнительные сведения о том, как получить текущую версию NDIS, см. в разделе Получение версии NDIS.

Примечание Драйвер не требуется для поддержки всех функций в более поздней редакции структуры. Например, драйвер мини-порта может создать структуру версии 2 и предоставить значения, соответствующие структуре версии 1.

Чтобы получить доступ к членам в структурах, имеющих сведения о версии, драйверы NDIS должны выполнить следующую процедуру:

  • Проверьте элементы Header.Revision и Header.Size перед доступом к каким-либо элементам в структуре.

  • Для структур более ранних версий (то есть структур с более низким номером редакции, чем номер, связанный с версией NDIS, которую поддерживает драйвер):

    • Драйвер должен проверить правильность значения Header.Size для значения Header.Revision . Например, значение NDIS_SIZEOF_Xxx_REVISION_1 верно для Xxx_REVISION_1 но слишком мало для Xxx_REVISION_2.
    • Значение Header.Size должно быть равно или больше NDIS_SIZEOF_Xxx_REVISION_Nn (где Nn — номер редакции структуры, используемой драйвером), а драйвер должен правильно обрабатывать сведения в структуре в соответствии с этой редакцией.
  • Для структур более поздних версий (то есть структур с более высоким номером редакции, чем номер, связанный с версией NDIS, которую поддерживает драйвер) драйвер может использовать структуру, как если бы она была более старой редакцией структуры. Структура более поздней версии всегда совместима с более старой версией.

  • Драйверы должны использовать правильную редакцию структуры для зарегистрированной версии NDIS драйвера. Например, драйвер NDIS 6.1 должен сообщать о своих возможностях разгрузки в NDIS_OFFLOAD структурах, задав элементы в структуре NDIS_OBJECT_HEADER , чтобы они указывали NDIS_OFFLOAD_REVISION_2. Однако драйвер не должен поддерживать все функции, входящие в состав NDIS_OFFLOAD_REVISION_2.

  • Драйвер, который успешно обрабатывает запрос на набор OID, должен задать элемент SupportedRevision в структуре NDIS_OID_REQUEST после возврата из запроса набора OID. Участник SupportedRevision уведомляет инициатора запроса редакции, поддерживаемой драйвером. Например, драйвер минипорта может создать Xxx_REVISION_2 структуру, указать значения, подходящие для структуры Xxx_REVISION_1, и заполнить остальную часть структуры нулями. Драйвер мини-порта будет сообщать о Xxx_REVISION_1 в элементе SupportedRevision . В этом случае драйвер протокола, который может поддерживать Xxx_REVISION_2, будет использовать Xxx_REVISION_1 сведения, поддерживаемые драйвером мини-порта.

  • Чтобы определить, какие сведения были успешно обработаны базовым драйвером, более лежачие драйверы, которые выдают запросы OID, должны проверка значение в элементе SupportedRevision в структуре NDIS_OID_REQUEST после возврата запроса OID.

Обзор версий NDIS

Указание сведений о версии NDIS