Configuration d’un fichier INF pour un pilote de filtre d’analyse
Les problèmes d’installation du pilote de filtre NDIS suivants sont associés à la surveillance des pilotes de filtre :
Définissez l’entrée du fichier INF de classe sur NetService dans le fichier INF. L’exemple suivant montre un exemple d’entrée de classe pour le fichier INF.
Class = NetService
La section DDInstall d’un fichier INF du pilote de filtre doit avoir une entrée Caractéristiques . L’exemple suivant montre comment définir l’entrée Caractéristiques dans votre fichier INF de filtre.
Characteristics=0x40000
La valeur 0x40000 indique que NCF_LW_FILTER (0x40000) est défini. Les pilotes de filtre ne doivent pas définir l’indicateur NCF_FILTER (0x400). Les valeurs des indicateurs xxx NCF_ sont définies dans Netcfgx.h. Pour plus d’informations sur NCF_ indicateurs Xxx , consultez section DDInstall dans un fichier INF réseau.
Définissez l’entrée du fichier INF NetCfgInstanceId dans le fichier INF, comme le montre l’exemple suivant.
NetCfgInstanceId="{5cbf81bf-5055-47cd-9055-a76b2b4e3697}"
Vous pouvez utiliser l’outil Uuidgen.exe pour créer le GUID de l’entrée NetCfgInstanceId .
La section DDInstall du fichier INF d’un pilote de filtre doit inclure une directive Addreg pour une clé Ndi . Le fichier INF doit spécifier l’entrée Service sous la clé Ndi . L’entrée ServiceBinary dans la section service-install du fichier INF spécifie le chemin d’accès au fichier binaire pour le pilote de filtre. Pour plus d’informations, consultez Ajout de valeurs Service-Related à la section Clé Ndi et DDInstall.Services dans un fichier INF réseau.
La section DDInstall d’un fichier INF du pilote de filtre doit avoir des entrées FilterType et FilterRunType . Pour spécifier un filtre de surveillance, définissez l’entrée FilterType dans votre fichier INF, comme le montre l’exemple suivant.
HKR, Ndi,FilterType,0x00010001 ,0x00000001
La valeur FilterType 0x00000001 indique que le filtre est un filtre de surveillance.
Définissez l’entrée FilterRunType dans votre fichier INF, comme le montre l’exemple suivant.
HKR, Ndi,FilterRunType,0x00010001 ,0x00000002
La valeur 0x00000002 dans l’exemple précédent indique que le module de filtre est facultatif. Pour installer un module de filtre obligatoire, définissez l’entrée FilterRunType sur 0x00000001. Pour plus d’informations, consultez Pilotes de filtre obligatoires.
Note Nous recommandons vivement qu’un pilote de filtre léger de surveillance (LWF) ne soit pas obligatoire, sauf s’il doit être utilisé dans un environnement contrôlé où il n’y aura pas de modification facultative des pilotes LWF. Cela est dû au fait qu’un pilote LWF de surveillance obligatoire peut entraîner l’échec de la modification des pilotes LWF facultatifs à FilterAttach. Un pilote LWF de surveillance est lié à chaque filtre de modification et liaison par conception pour faciliter la surveillance du trafic réseau à tous les niveaux. Examinez le cas suivant :
- Un instance d’un pilote LWF de surveillance obligatoire est installé sur un pilote LWF de modification facultatif.
- Le pilote LWF facultatif le plus bas ne parvient pas à s’attacher à un composant inférieur. Cela entraîne l’échec de l’appel du gestionnaire FilterAttach du pilote LWF de surveillance obligatoire.
- Étant donné qu’une instance d’un pilote LWF obligatoire n’est pas chargée, NDIS ne lie aucun protocole (par exemple TCP/IP) à l’interface ou à la carte réseau, ce qui rend l’interface inutilisable.
L’exemple suivant montre comment un fichier INF du pilote de filtre spécifie le nom du service.
HKR, Ndi,Service,,"NdisMon"
Dans cet exemple, « NdisMon » est le nom du service du pilote tel qu’il est signalé à NDIS. Notez que le nom du service d’un pilote de filtre peut être différent du nom du binaire du pilote, mais qu’ils sont généralement identiques.
L’exemple suivant montre comment le fichier INF de filtre référence le nom du service du pilote de filtre lorsqu’il ajoute ce service.
[Install.Services] AddService=NdisMon,,NdisMon_Service_Inst [NdisMon_Service_Inst] DisplayName = %NdisMon_Desc% ServiceType = 1 ;SERVICE_KERNEL_DRIVER StartType = 1 ;SERVICE_SYSTEM_START ErrorControl = 1 ;SERVICE_ERROR_NORMAL ServiceBinary = %13%\ndisMon.sys LoadOrderGroup = NDIS Description = %NdisMon_Desc% AddReg = Common.Params.Reg
Un fichier INF de filtre doit spécifier au moins le nom de service principal du filtre pour l’attribut CoServices , comme le montre l’exemple suivant.
HKR, Ndi,CoServices,0x00010000,"NdisMon"
Pour plus d’informations sur l’attribut CoServices , consultez Ajout de valeurs Service-Related à la clé Ndi.
La valeur FilterClass dans le fichier INF d’un pilote de filtre détermine son ordre dans une pile de filtres de modification. Toutefois, la surveillance des pilotes de filtre ne définit pas la clé FilterClass . Au lieu de cela, le module de filtre de surveillance installé en premier est le plus proche de l’adaptateur miniport.
Vous devez définir les entrées suivantes dans le fichier INF du pilote de filtre de surveillance pour contrôler les liaisons de pilotes :
HKR, Ndi\Interfaces,UpperRange,,"noupper" HKR, Ndi\Interfaces,LowerRange,,"nolower" HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
Pour plus d’informations sur le contrôle des liaisons de pilotes, consultez Spécification des relations de liaison de pilote de filtre.
Un fichier INF de filtre de surveillance peut spécifier des définitions de paramètres courantes pour le pilote de filtre, les paramètres associés à un adaptateur spécifique et les paramètres associés à un instance particulier (module de filtre). L’exemple suivant montre quelques définitions de paramètres courantes.
Attention
L’utilisation de HKR AddReg pour placer des clés directement sous l’état du service est une violation de conformité. Ces clés doivent être ajoutées sous la clé Paramètres du service pour être conformes.
[Common.Params.reg] HKR, FilterDriverParams\DriverParam, ParamDesc, ,"Driverparam for filter" HKR, FilterDriverParams\DriverParam, default, ,"5" HKR, FilterDriverParams\DriverParam, type, ,"int" HKR, FilterAdapterParams\AdapterParam, ParamDesc, ,"Adapterparam for filter" HKR, FilterAdapterParams\AdapterParam, default, ,"10" HKR, FilterAdapterParams\AdapterParam, type, ,"int" HKR, FilterInstanceParams\InstanceParam, ParamDesc, ,"Instance param for filter" HKR, FilterInstanceParams\InstanceParam, default, ,"15" HKR, FilterInstanceParams\InstanceParam, type, ,"int"