Inicialización de un proveedor de división de Header-Data
Para admitir la división de datos de encabezado, un controlador de miniporte debe registrarse como controlador NDIS 6.1 o posterior. El archivo de orígenes del controlador de miniport debe especificar DNDIS61_MINIPORT=1 en lugar de DNDIS60_MINIPORT=1. El controlador de minipuerto también debe especificar NDIS 6.1 o una versión posterior en la estructura NDIS_MINIPORT_DRIVER_CHARACTERISTICS .
Para registrar sus atributos de división de datos de encabezado, un controlador de miniporte NDIS 6.1 llama a la función NdisMSetMiniportAttributes desde su función MiniportInitializeEx y pasa NdisMSetMiniportAttributes una estructura de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES inicializada.
La estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES contiene la siguiente información:
El miembro HDSplitAttributes de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES contiene un puntero a una estructura NDIS_HD_SPLIT_ATTRIBUTES que especifica las funcionalidades de división de datos de encabezado que proporciona un adaptador de miniporte.
El miembro HardwareCapabilities de NDIS_HD_SPLIT_ATTRIBUTES contiene las funcionalidades de división de datos de encabezado que admite el adaptador de miniporte. Estas funcionalidades pueden incluir funcionalidades que están deshabilitadas actualmente por la configuración del archivo INF o a través de la página De propiedades avanzadas .
El miembro CurrentCapabilities de NDIS_HD_SPLIT_ATTRIBUTES contiene las funcionalidades actuales de división de datos de encabezado que admite el adaptador de miniporte. Si la división de datos de encabezado está habilitada a través de la palabra clave INF estandarizada *HeaderDataSplit , el controlador de minipuerto usa las mismas marcas que el miembro HardwareCapabilities para indicar la configuración actual de división de datos de encabezado. Para obtener más información sobre *HeaderDataSplit, vea Palabras clave INF estandarizadas para Header-Data División.
El miembro HDSplitFlags de NDIS_HD_SPLIT_ATTRIBUTES contiene marcas de configuración de división de datos de encabezado. El controlador de minipuerto debe establecer este miembro en cero antes de llamar a NdisMSetMiniportAttributes. NDIS establece este miembro con un OR bit a bit de las marcas de configuración. Después de que NdisMSetMiniportAttributes se devuelva correctamente, el controlador de minipuerto debe comprobar la configuración de la marca en HDSplitFlags y configurar el hardware en consecuencia.
NDIS usa la marca NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT para habilitar la división de datos de encabezado para el adaptador de minipuerto. NDIS no establecerá NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT si el controlador de miniporte no estableció la marca NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT en el miembro CurrentCapabilities de la estructura NDIS_HD_SPLIT_ATTRIBUTES . El controlador de minipuerto debe habilitar la división de datos de encabezado en la NIC si NDIS establece la marca NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT.
El controlador de minipuerto debe establecer el miembro BackfillSize de la estructura NDIS_HD_SPLIT_ATTRIBUTES en cero antes de llamar a NdisMSetMiniportAttributes. NDIS establece el miembro BackfillSize si el controlador de minipuerto debe asignar previamente el almacenamiento de reposición en el búfer de datos de los fotogramas divididos. Después de que NdisMSetMiniportAttributes se devuelva correctamente, el controlador de minipuerto debe usar el valor BackfillSize que especificó NDIS y asignar previamente los búferes de datos. Para obtener más información sobre el tamaño de reposición del búfer de datos, consulte Asignación de reposición para el búfer de datos.
El controlador de minipuerto debe establecer el miembro MaxHeaderSize de la estructura NDIS_HD_SPLIT_ATTRIBUTES en cero antes de llamar a NdisMSetMiniportAttributes. NDIS establece este miembro en el tamaño máximo permitido para el búfer de encabezado de los marcos divididos. Después de que NdisMSetMiniportAttributes se devuelva correctamente, el controlador de miniporte debe usar el valor MaxHeaderSize especificado por NDIS. Para obtener más información sobre el tamaño máximo del encabezado, vea Asignar el búfer de encabezado.