Обзор поддержки NDIS для версий заголовков

Многие структуры NDIS включают сведения о версии структуры. Драйверы NDIS и сам NDIS инициализируют элемент Header в таких структурах, как это необходимо для каждой структуры. Драйверы NDIS должны проверять сведения о версии, если таковые есть, в каждой структуре перед доступом к членам структуры.

Элемент заголовка — это структура NDIS_OBJECT_HEADER. Эта структура содержит номер редакции, тип и размер структуры, включающую элемент заголовка.

Структуры, включающие заголовок , соответствуют следующим требованиям:

  • Структура будет иметь новый номер редакции, если в список членов добавляются новые данные для новой версии NDIS. Например, если версия NDIS 6.1 структуры имеет новых членов в конце списка членов, в объединении или в битовой маске, она будет иметь другое значение редакции по сравнению с версией NDIS 6.0.

  • После изменения структуры размер последующей редакции структуры может быть равен или больше, чем размер предыдущей редакции структуры, но он не будет меньше. Если новый размер превышает размер предыдущей редакции, новые члены добавляются в конце списка участников.

  • Структура будет иметь только новую версию, если предыдущие сведения о редакции по-прежнему действительны и полные. То есть новая версия структуры содержит надмножество элементов более старых версий. Примечание Если не удается выполнить любое из предыдущих условий, NDIS предоставляет новую структуру с новым именем, заменяющим существующую структуру вместо предоставления обновленной версии существующей структуры.

  • Драйверы NDIS всегда должны использовать предустановленные значения версии. NDIS предоставляет такие определения в виде Xxx_REVISION_Nn и NDIS_SIZEOF_Xxx_REVISION_Nn для версии и размера компонентов NDIS_OBJECT_HEADER соответственно. Кроме того, Xxx представляет имя структуры, а Nn — номер редакции. Например, пересмотр и размер для первого пересмотра структуры NDIS_FILTER_PARTIAL_CHARACTERISTICS - это соответственно NDIS_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1 и NDIS_SIZEOF_FILTER_PARTIAL_CHARACTERISTICS_REVISION_1.

  • Значение Header.Size должно соответствовать значению Header.Revision. То есть, если член Revision содержит Xxx_REVISION_1, значение члена Size должно быть не меньше NDIS_SIZEOF_Xxx_REVISION_1.

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

Указание информации о версии NDIS