Общие сведения о поддержке NDIS для версий заголовков
Многие структуры NDIS содержат сведения о версии структуры. Драйверы NDIS или NDIS инициализируют элемент заголовка в таких структурах, как это необходимо для каждой структуры. Драйверы NDIS должны проверка сведения о версии, если таковые есть, в каждой структуре, прежде чем получить доступ к членам структуры.
Элемент заголовка является NDIS_OBJECT_HEADER структурой. Эта структура содержит номер редакции, тип и размер структуры, включающей элемент Заголовка .
Структуры, включающие элемент header , соответствуют следующим требованиям:
Структура будет иметь новое значение редакции, если новые сведения будут добавлены в список элементов для новой версии NDIS. Например, если версия NDIS 6.1 структуры содержит новые члены в конце списка элементов, в объединении или в битовой маске, она будет иметь значение редакции, отличное от версии NDIS 6.0.
После изменения структуры размер более поздней редакции структуры может быть равен или больше, чем размер предыдущей редакции структуры, но он не будет меньше. Если новый размер больше, чем размер предыдущей редакции, новые элементы добавляются в конце списка элементов.
Структура будет иметь новую редакцию, только если предыдущие сведения о редакции по-прежнему действительны и полны. То есть новая версия структуры содержит надмножество элементов более старых версий. Примечание Если какое-либо из предыдущих условий не может быть выполнено, NDIS предоставляет новую структуру с новым именем, которое заменяет существующую структуру вместо того, чтобы предоставлять пересмотренную версию существующей структуры.
Драйверы NDIS всегда должны использовать предопределенные значения редакции. NDIS предоставляет такие определения в виде Xxx_REVISION_Nn и NDIS_SIZEOF_Xxx_REVISION_Nn для элементов Revision и SizeNDIS_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.