Partager via


MSI-X Préinscription

Pour prendre en charge la modification des affinités d’interruption pour MSI-X ou pour supprimer des ressources d’interruption de message, un pilote miniport doit établir une fonction de filtrage des exigences en matière de ressources. Cette étape de préinscription se produit avant que NDIS appelle la fonction MiniportInitializeEx .

Pour établir une fonction de filtre des exigences en ressources, le pilote miniport doit fournir une fonction MiniportSetOptions. Lorsque le pilote miniport appelle la fonction NdisMRegisterMiniportDriver à partir de la routine DriverEntry , le pilote passe le point d’entrée pour MiniportSetOptions dans la structure NDIS_MINIPORT_DRIVER_CHARACTERISTICS . NDIS appelle la fonction MiniportSetOptions dans le contexte de NdisMRegisterMiniportDriver.

À partir de MiniportSetOptions, le pilote miniport appelle la fonction NdisSetOptionalHandlers et spécifie une structure NDIS_MINIPORT_PNP_CHARACTERISTICS . Cette structure définit les points d’entrée pour les fonctions MiniportAddDevice, MiniportRemoveDevice, MiniportStartDevice et MiniportFilterResourceRequirements .

Lorsque NDIS reçoit une demande d'ajout d'appareil du gestionnaire Plug and Play (PnP), NDIS appelle la fonction MiniportAddDevice du pilote miniport. Le handle que NDIS transmet à MiniportAddDevice dans le paramètre MiniportAdapterHandle est le handle que NDIS passe ultérieurement à la fonction MiniportInitializeEx .

Dans MiniportAddDevice, le pilote initialise une structure NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES et transmet cette structure à la fonction NdisMSetMiniportAttributes . La structure NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES contient le membre MiniportAddDeviceContext qui est un handle vers une zone de contexte allouée par le pilote miniport pour l’appareil. NDIS fournit ultérieurement ce handle de contexte aux fonctions MiniportRemoveDevice, MiniportFilterResourceRequirements, MiniportStartDevice et MiniportInitializeEx . Pour MiniportInitializeEx, le handle de contexte est transmis dans le membre MiniportAddDeviceContext de la structure NDIS_MINIPORT_INIT_PARAMETERS vers laquelle le paramètre MiniportInitParameters pointe.

Une fois que NDIS appelle MiniportAddDevice et que MiniportAddDevice retourne NDIS_STATUS_SUCCESS, NDIS appelle la fonction MiniportFilterResourceRequirements chaque fois qu'il reçoit le paquet de requête d'E/S IRP_MN_FILTER_RESOURCE_REQUIREMENTS (IRP). MiniportFilterResourceRequirements peut modifier l’affinité d’interruption pour chaque message MSI-X, ajouter des ressources d’interruption de message ou supprimer des ressources d’interruption de message si le pilote s’inscrit pour des interruptions basées sur des lignes dans la fonction MiniportInitializeEx . Pour plus d’informations sur l’établissement d’une stratégie d’affinité d’interruption, consultez MSI-X filtrage des ressources.

Lorsque NDIS reçoit une requête de retrait de dispositif du gestionnaire PnP, NDIS appelle la fonction MiniportRemoveDevice du pilote miniport. La fonction MiniportRemoveDevice doit annuler les opérations effectuées par la fonction MiniportAddDevice .