Partager via


MINIPORT_ADD_DEVICE fonction de rappel (ndis.h)

La fonction MiniportAddDevice permet à un pilote miniport d’établir une zone de contexte pour un appareil ajouté.

Remarque Vous devez déclarer la fonction à l’aide du type MINIPORT_ADD_DEVICE. Pour plus d’informations, consultez la section Exemples suivants.
 

Syntaxe

MINIPORT_ADD_DEVICE MiniportAddDevice;

NDIS_STATUS MiniportAddDevice(
  [in] NDIS_HANDLE NdisMiniportHandle,
  [in] NDIS_HANDLE MiniportDriverContext
)
{...}

Paramètres

[in] NdisMiniportHandle

Handle NDIS qui identifie l’adaptateur miniport que le gestionnaire Plug-and-Play (PnP) ajoute. NDIS transmet également ce handle au fonction MiniportInitializeEx.

[in] MiniportDriverContext

Handle vers une zone de contexte allouée par le pilote où le pilote gère les informations d’état et de configuration. Le pilote miniport a passé cette zone de contexte au fonction NdisMRegisterMiniportDriver.

Valeur de retour

MiniportAddDevice retourne l’une des valeurs suivantes :

Retourner le code Description
NDIS_STATUS_SUCCESS
Le pilote miniport a correctement alloué les ressources dont il a besoin pour ajouter l’appareil.
NDIS_STATUS_RESOURCES
Le pilote miniport n’a pas pu allouer les ressources requises.
NDIS_STATUS_FAILURE

MiniportAddDevice a échoué pour des raisons autres que des ressources insuffisantes.

 

Si MiniportAddDevice échoue, NDIS n’appelle pas la fonction MiniportInitializeEx pour initialiser l’adaptateur miniport.

Remarques

La fonction MiniportAddDevice est une fonction facultative. Les pilotes miniports qui prennent en charge MSI-X doivent spécifier un point d’entrée pour cette fonction dans la structure NDIS_MINIPORT_PNP_CHARACTERISTICS.

MiniportAddDevice peut allouer une zone de contexte pour la gestion IRP_MN_FILTER_RESOURCE_REQUIREMENTS paquets de requête d’E/S (IRPs) que le MiniportFilterResourceRequirements de fonctions. Les pilotes miniports spécifient la zone de contexte en initialisant un NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES structure, puis l’appel de la fonction NdisMSetMiniportAttributes. NDIS fournit ultérieurement ce handle de contexte au MiniportRemoveDevice, MiniportFilterResourceRequirements, MiniportStartDeviceet fonctions MiniportInitializeEx. Pour MiniportInitializeEx, le handle de contexte est transmis dans le MiniportAddDeviceContext membre du NDIS_MINIPORT_INIT_PARAMETERS structure vers laquelle pointe le paramètre MiniportInitParameter s.

Si le pilote miniport échoue le MiniportAddDevice appel après avoir alloué la zone de contexte, le pilote doit libérer la zone de contexte avant de revenir de MiniportAddDevice.

Les pilotes miniport doivent utiliser une zone de contexte différente pour le membre MiniportAddDeviceContext de la structure NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES et le membre MiniportAdapterContext membre de la structure NDIS_MINIPORT_INIT_PARAMETERS. Les zones de contexte distinctes garantissent que les informations contenues dans la zone de contexte ne sont pas réinitialisées, ce qui peut se produire dans la fonction MiniportInitializeEx si l’adaptateur miniport est arrêté et réinitialisé.

Lorsque le gestionnaire PnP demande à NDIS de supprimer l’appareil, NDIS appelle la fonction MiniportRemoveDevice pour annuler les opérations qui MiniportAddDevice effectuées.

NDIS appelle MiniportAddDevice à IRQL = PASSIVE_LEVEL.

exemples de

Pour définir une fonction MiniportAddDevice, vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction que vous définissez. Windows fournit un ensemble de types de fonctions pour les pilotes. La déclaration d’une fonction à l’aide des types de fonctions permet d'Analyse du code pour les pilotes, de vérificateur de pilotes statiques (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.

Par exemple, pour définir une fonction MiniportAddDevice nommée « MyAddDevice », utilisez le type MINIPORT_ADD_DEVICE comme indiqué dans cet exemple de code :

MINIPORT_ADD_DEVICE MyAddDevice;

Ensuite, implémentez votre fonction comme suit :

_Use_decl_annotations_
NDIS_STATUS
 MyAddDevice(
    NDIS_HANDLE  NdisMiniportHandle,
    NDIS_HANDLE  MiniportDriverContext
    )
  {...}

Le type de fonction MINIPORT_ADD_DEVICE est défini dans le fichier d’en-tête Ndis.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction MINIPORT_ADD_DEVICE dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur la configuration requise pour les déclarations de fonction, consultez Déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes NDIS.

Pour plus d’informations sur Use_decl_annotations, consultez annoter le comportement de la fonction.

Exigences

Exigence Valeur
client minimum pris en charge Prise en charge dans NDIS 6.0 et versions ultérieures.
plateforme cible Windows
d’en-tête ndis.h (include Ndis.h)
IRQL PASSIVE_LEVEL

Voir aussi

IRP_MN_FILTER_RESOURCE_REQUIREMENTS MiniportFilterResourceRequirements

MiniportInitializeEx

MiniportRemoveDevice

miniportStartDevice

NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES

NDIS_MINIPORT_INIT_PARAMETERS

NDIS_MINIPORT_PNP_CHARACTERISTICS

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes