Partilhar via


Pré-Inscrição MSI-X

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

Para estabelecer uma função de filtro de requisitos de recursos, o driver de miniporta deve fornecer uma função MiniportSetOptions. Quando o driver de miniporta chama a funçãoNdisMRegisterMiniportDriver da rotina deDriverEntry, o driver passa o ponto de entrada para MiniportSetOptions na estrutura NDIS_MINIPORT_DRIVER_CHARACTERISTICS. O NDIS chama a função MiniportSetOptions no contexto do NdisMRegisterMiniportDriver.

A partir de MiniportSetOptions, o driver de miniporta chama a função NdisSetOptionalHandlers e especifica uma 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 de dispositivo adicional do gerenciador Plug and Play (PnP), o NDIS chama a função de MiniportAddDevice do driver de miniporta. O identificador que o NDIS passa para MiniportAddDevice no parâmetro MiniportAdapterHandle é o identificador que o NDIS passa posteriormente para a funçãoMiniportInitializeEx.

Em 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 identificador para uma área de contexto alocada por um driver de miniporta para o dispositivo. Mais tarde, o NDIS fornece esse identificador de contexto para as funções de MiniportRemoveDevice, MiniportFilterResourceRequirements, MiniportStartDevicee MiniportInitializeEx. Para MiniportInitializeEx, o identificador de contexto é passado no membro MiniportAddDeviceContext da estrutura NDIS_MINIPORT_INIT_PARAMETERS para a 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) IRP_MN_FILTER_RESOURCE_REQUIREMENTS. 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 se registrar para interrupções baseadas em linha na funçãoMiniportInitializeEx do. 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 remoção de dispositivo do gestor PnP, o NDIS chama a função MiniportRemoveDevice do controlador de miniporta. A função MiniportRemoveDevice deve desfazer as operações que a função MiniportAddDevice realizou.