Compartilhar via


Pré-registro do MSI-X

Para dar suporte à alteração das afinidades de interrupção para MSI-X ou remover recursos de interrupção de mensagem, um driver de miniporto deve estabelecer uma função de filtro para requisitos de recursos. Essa etapa de pré-registro ocorre antes que o NDIS chame a função MiniportInitializeEx .

Para estabelecer uma função de filtro de requisitos de recurso, o driver de miniport deve fornecer uma função MiniportSetOptions . Quando o driver de miniporto chama a função NdisMRegisterMiniportDriver da rotina DriverEntry, o driver passa o ponto de entrada de MiniportSetOptions na estrutura NDIS_MINIPORT_DRIVER_CHARACTERISTICS. O NDIS chama a função MiniportSetOptions no contexto de NdisMRegisterMiniportDriver.

No MiniportSetOptions, o driver de miniporto chama a função NdisSetOptionalHandlers e especifica a estrutura NDIS_MINIPORT_PNP_CHARACTERISTICS. Essa estrutura define os pontos de entrada para as funções MiniportAddDevice, MiniportRemoveDevice, MiniportStartDevicee MiniportFilterResourceRequirements.

Quando o NDIS recebe uma solicitação para adicionar dispositivo do gerenciador Plug and Play (PnP), o NDIS chama a função MiniportAddDevice do driver de miniport. O identificador que o NDIS passa para MiniportAddDevice no parâmetro MiniportAdapterHandle é o identificador que o NDIS passa posteriormente para a função MiniportInitializeEx .

No MiniportAddDevice, o driver inicializa uma estrutura NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES e passa essa estrutura para a função NdisMSetMiniportAttributes. A estrutura NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES contém o membro MiniportAddDeviceContext que é um handle para uma área de contexto alocada pelo miniport driver para o dispositivo. Posteriormente, o NDIS fornece esse identificador de contexto para as funções MiniportRemoveDevice, MiniportFilterResourceRequirements, MiniportStartDevice e MiniportInitializeEx . Para MiniportInitializeEx, o identificador de contexto é passado no membro MiniportAddDeviceContext da estrutura NDIS_MINIPORT_INIT_PARAMETERS à qual o parâmetro MiniportInitParameters aponta.

Depois que o NDIS chama MiniportAddDevice e MiniportAddDevice retorna NDIS_STATUS_SUCCESS, o NDIS chama a função MiniportFilterResourceRequirements sempre que recebe o pacote de solicitação de E/S IRP_MN_FILTER_RESOURCE_REQUIREMENTS (IRP). MiniportFilterResourceRequirements pode alterar a afinidade de interrupção para cada mensagem MSI-X, adicionar recursos de interrupção de mensagem ou remover recursos de interrupção de mensagem se o driver registrar interrupções baseadas em linha na função MiniportInitializeEx . Para obter mais informações sobre como estabelecer uma política de afinidade de interrupção, consulte MSI-X Filtragem de Recursos.

Quando o NDIS recebe uma solicitação de remove-device do gerenciador PnP, o NDIS chama a função MiniportRemoveDevice do driver de miniport. A função MiniportRemoveDevice deve desfazer as operações executadas pela função MiniportAddDevice .