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

Структуры NDIS, предоставляющие сведения о версии, имеют элемент заголовка, который определён как структура 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