Modificando filtros de recebimento de agrupamento de pacotes
Para modificar um filtro de recebimento em um driver de miniporte que dá suporte à união de pacotes, um driver de filtro ou protocolo sobressociente executa as seguintes etapas:
Para obter uma lista de todos os filtros de recebimento de agrupamento de pacotes que foram baixados em um driver de miniporto, o driver sobreposto emite uma solicitação de método OID de OID_RECEIVE_FILTER_ENUM_FILTERS. O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_RECEIVE_FILTER_INFO_ARRAY .
Nota Quando o driver ou aplicativo sobreposto inicializa a estrutura NDIS_RECEIVE_FILTER_INFO_ARRAY , ele deve definir o membro QueueId como NDIS_DEFAULT_RECEIVE_QUEUE_ID.
Após um retorno bem-sucedido da solicitação de método OID de OID_RECEIVE_FILTER_ENUM_FILTERS, o membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura de NDIS_RECEIVE_FILTER_INFO_ARRAY atualizada seguida por uma ou mais estruturas de NDIS_RECEIVE_FILTER_INFO . Cada estrutura NDIS_RECEIVE_FILTER_INFO especifica o identificador (ID) de um filtro definido no adaptador de rede.
Para obter os parâmetros de um filtro de recebimento de pacote específico que foi baixado para o driver de miniporto, o driver sobreposto emite a solicitação de método OID de OID_RECEIVE_FILTER_PARAMETERS. O membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_RECEIVE_FILTER_PARAMETERS . O driver ou aplicativo sobreposto inicializa a estrutura NDIS_RECEIVE_FILTER_PARAMETERS definindo o membro FilterId como o valor de ID diferente de zero do filtro cujos parâmetros devem ser retornados.
Após um retorno bem-sucedido da solicitação de método OID, o membro InformationBuffer da estrutura NDIS_OID_REQUEST contém um ponteiro para um buffer. Esse buffer é formatado para conter o seguinte:
Uma estrutura NDIS_RECEIVE_FILTER_PARAMETERS que especifica os parâmetros para o filtro de recebimento do NDIS.
Uma matriz de estruturas de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS que especifica o critério de teste de filtro para um campo em um cabeçalho de pacote de rede.
O driver overlying modifica o filtro de recebimento para adicionar, excluir ou alterar o conjunto de critérios de teste do filtro. O driver faz isso adicionando, excluindo ou modificando estruturas de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS individuais da matriz de parâmetros de campo especificada pela estrutura NDIS_RECEIVE_FILTER_PARAMETERS .
Quando o driver de sobreposição tiver concluído as modificações no critério de teste, ele deverá atualizar os membros da estrutura NDIS_RECEIVE_FILTER_PARAMETERS para refletir as alterações feitas no filtro de recebimento. Por exemplo, o driver de sobreposição deve atualizar o membro FieldParametersArrayNumElements para conter o novo número de elementos na matriz.
Para obter mais informações, consulte Especificando um filtro de recebimento de agrupamento de pacotes.
O driver sobreposto emite uma solicitação de método OID de OID_RECEIVE_FILTER_SET_FILTER para baixar o filtro de recebimento modificado para o driver de miniport.
Para obter mais informações, consulte Configurando um filtro de recebimento de agrupamento de pacotes.