Inicializando um provedor de divisão Header-Data
Para dar suporte à divisão de dados de cabeçalho, um driver de miniporto deve ser registrado como um driver NDIS 6.1 ou posterior. O arquivo de fontes para o driver de miniporto deve especificar DNDIS61_MINIPORT=1 em vez de DNDIS60_MINIPORT=1. O driver de miniporta também deve especificar o NDIS 6.1 ou uma versão posterior na estrutura NDIS_MINIPORT_DRIVER_CHARACTERISTICS .
Para registrar seus atributos de divisão de dados de cabeçalho, um driver de miniporto NDIS 6.1 chama a função NdisMSetMiniportAttributes de sua função MiniportInitializeEx e passa NdisMSetMiniportAttributes uma estrutura de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES inicializada.
A estrutura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES contém as seguintes informações:
O membro HDSplitAttributes do NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES contém um ponteiro para uma estrutura NDIS_HD_SPLIT_ATTRIBUTES que especifica os recursos de divisão de dados de cabeçalho fornecidos por um adaptador de miniporto.
O membro HardwareCapabilities do NDIS_HD_SPLIT_ATTRIBUTES contém os recursos de divisão de dados de cabeçalho compatíveis com o adaptador de miniporta. Esses recursos podem incluir recursos que estão desabilitados atualmente pelas configurações de arquivo INF ou por meio da página Propriedades avançadas .
O membro CurrentCapabilities do NDIS_HD_SPLIT_ATTRIBUTES contém os recursos atuais de divisão de dados de cabeçalho compatíveis com o adaptador de miniporto. Se a divisão de dados de cabeçalho estiver habilitada por meio do palavra-chave INF padronizado *HeaderDataSplit, o driver de miniporto usará os mesmos sinalizadores que o membro HardwareCapabilities para indicar a configuração atual de divisão de dados de cabeçalho. Para obter mais informações sobre *HeaderDataSplit, consulte Palavras-chave INF padronizadas para Header-Data Split.
O membro HDSplitFlags do NDIS_HD_SPLIT_ATTRIBUTES contém sinalizadores de configuração de divisão de dados de cabeçalho. O driver de miniporta deve definir esse membro como zero antes de chamar NdisMSetMiniportAttributes. O NDIS define esse membro com um OR bit a bit dos sinalizadores de configuração. Depois que NdisMSetMiniportAttributes retornar com êxito, o driver de miniporto deverá marcar as configurações de sinalizador em HDSplitFlags e configurar o hardware adequadamente.
O NDIS usa o sinalizador NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT para habilitar a divisão de dados de cabeçalho para o adaptador de miniporto. O NDIS não definirá NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT se o driver de miniporto não tiver definido o sinalizador NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT no membro CurrentCapabilities da estrutura NDIS_HD_SPLIT_ATTRIBUTES . O driver de miniporta deverá habilitar a divisão de dados de cabeçalho na NIC se o NDIS definir o sinalizador NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT.
O driver de miniporto deve definir o membro BackfillSize da estrutura NDIS_HD_SPLIT_ATTRIBUTES como zero antes de chamar NdisMSetMiniportAttributes. O NDIS define o membro BackfillSize se o driver de miniporta precisar pré-alocar o armazenamento de backfill no buffer de dados dos quadros divididos. Depois que NdisMSetMiniportAttributes retornar com êxito , o driver de miniporto deverá usar o valor BackfillSize especificado pelo NDIS e pré-alocar os buffers de dados. Para obter mais informações sobre o tamanho do backfill do buffer de dados, consulte Alocando o backfill para o buffer de dados.
O driver de miniporto deve definir o membro MaxHeaderSize da estrutura NDIS_HD_SPLIT_ATTRIBUTES como zero antes de chamar NdisMSetMiniportAttributes. O NDIS define esse membro com o tamanho máximo permitido para o buffer de cabeçalho dos quadros divididos. Depois que NdisMSetMiniportAttributes retornar com êxito , o driver de miniporto deverá usar o valor MaxHeaderSize especificado pelo NDIS. Para obter mais informações sobre o tamanho máximo do cabeçalho, consulte Alocando o buffer de cabeçalho.