Инициализация поставщика разбиения Header-Data
Для поддержки разделения заголовков и данных драйвер мини-порта необходимо зарегистрировать как драйвер NDIS 6.1 или более поздней версии. В файле источников для драйвера мини-порта необходимо указать DNDIS61_MINIPORT=1 вместо DNDIS60_MINIPORT=1. Драйвер мини-порта также должен указать NDIS 6.1 или более позднюю версию в структуре NDIS_MINIPORT_DRIVER_CHARACTERISTICS .
Чтобы зарегистрировать атрибуты разделения заголовков и данных, драйвер минипорта NDIS 6.1 вызывает функцию NdisMSetMiniportAttributes из функции MiniportInitializeEx и передает NdisMSetMiniportAttributes инициализированнуюструктуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Структура NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES содержит следующие сведения:
Элемент HDSplitAttributes NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES содержит указатель на структуру NDIS_HD_SPLIT_ATTRIBUTES , которая определяет возможности разделения заголовков и данных, которые предоставляет адаптер мини-порта.
Член HardwareCapabilities NDIS_HD_SPLIT_ATTRIBUTES содержит возможности разделения заголовков и данных, поддерживаемые адаптером мини-порта. Эти возможности могут включать возможности, которые в настоящее время отключены параметрами INF-файла или на странице Дополнительные свойства.
Элемент CurrentCapabilities NDIS_HD_SPLIT_ATTRIBUTES содержит текущие возможности разделения заголовков и данных, поддерживаемые адаптером мини-порта. Если разделение заголовков и данных включено с помощью стандартизованного INF-ключевое слово *HeaderDataSplit, драйвер мини-порта использует те же флаги, что и член HardwareCapabilities, чтобы указать текущую конфигурацию разделения заголовков и данных. Дополнительные сведения о *HeaderDataSplit см. в разделе Стандартизированные ключевые слова INF для разбиения Header-Data.
Элемент HDSplitFlags NDIS_HD_SPLIT_ATTRIBUTES содержит флаги конфигурации разделения заголовков и данных. Драйвер мини-порта должен установить для этого элемента значение 0 перед вызовом NdisMSetMiniportAttributes. NDIS задает этому члену побитовое ИЛИ флагов конфигурации. После успешного возврата NdisMSetMiniportAttributes драйвер мини-порта должен проверка параметры флага в HDSplitFlags и соответствующим образом настроить оборудование.
NDIS использует флаг NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT, чтобы включить разделение заголовков и данных для адаптера минипорта. NDIS не устанавливает NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT, если драйвер мини-порта не установил флаг NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT в элементе CurrentCapabilitiesструктуры NDIS_HD_SPLIT_ATTRIBUTES . Драйвер мини-порта должен включить разделение заголовков и данных в сетевом адаптере, если NDIS устанавливает флаг NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT.
Драйвер мини-порта должен задать для элемента BackfillSize структуры NDIS_HD_SPLIT_ATTRIBUTES значение 0, прежде чем вызывать атрибуты NdisMSetMiniportAttributes. NDIS задает член BackfillSize, если драйвер мини-порта должен предварительно выделить хранилище обратного заполнения в буфере данных разделенных кадров. После успешного возврата NdisMSetMiniportAttributes драйвер мини-порта должен использовать значение BackfillSize , указанное NDIS, и предварительно выделить буферы данных. Дополнительные сведения о размере обратного заполнения буфера данных см. в разделе Выделение обратного заполнения для буфера данных.
Драйвер мини-порта должен задать для элемента MaxHeaderSize структуры NDIS_HD_SPLIT_ATTRIBUTES значение 0, прежде чем вызывать атрибуты NdisMSetMiniportAttributes. NDIS задает этому элементу максимальный размер, допустимый для буфера заголовков разделенных кадров. После успешного возврата NdisMSetMiniportAttributes драйвер мини-порта должен использовать значение MaxHeaderSize , указанное NDIS. Дополнительные сведения о максимальном размере заголовка см. в разделе Выделение буфера заголовков.