Configuración de un archivo INF para un controlador de filtro de supervisión
Los siguientes problemas de instalación del controlador de filtro NDIS están asociados con los controladores de filtro de supervisión:
Establezca la entrada del archivo CLASS INF en NetService en el archivo INF. En el ejemplo siguiente se muestra una entrada de clase de ejemplo para el archivo INF.
Class = NetService
La sección DDInstall de un archivo INF del controlador de filtro debe tener una entrada Características . En el ejemplo siguiente se muestra cómo definir la entrada Características en el archivo INF de filtro.
Characteristics=0x40000
El valor de 0x40000 indica que se establece NCF_LW_FILTER (0x40000). Los controladores de filtro no deben establecer la marca de NCF_FILTER (0x400). Los valores de las marcas NCF_ Xxx se definen en Netcfgx.h. Para obtener más información sobre NCF_ marcas Xxx , vea DDInstall Section in a Network INF File.
Establezca la entrada del archivo INF NetCfgInstanceId en el archivo INF, como se muestra en el ejemplo siguiente.
NetCfgInstanceId="{5cbf81bf-5055-47cd-9055-a76b2b4e3697}"
Puede usar la herramienta Uuidgen.exe para crear el GUID para la entrada NetCfgInstanceId .
La sección DDInstall del archivo INF para un controlador de filtro debe incluir una directiva Addreg para una clave Ndi . El archivo INF debe especificar la entrada Servicio en la clave Ndi . La entrada ServiceBinary de la sección service-install del archivo INF especifica la ruta de acceso al binario para el controlador de filtro. Para obtener más información, vea Agregar Service-Related valores a la sección Clave Ndi y DDInstall.Services en un archivo INF de red.
La sección DDInstall de un archivo INF del controlador de filtro debe tener entradas FilterType y FilterRunType . Para especificar un filtro de supervisión, defina la entrada FilterType en el archivo INF, como se muestra en el ejemplo siguiente.
HKR, Ndi,FilterType,0x00010001 ,0x00000001
El valor FilterType 0x00000001 indica que el filtro es un filtro de supervisión.
Defina la entrada FilterRunType en el archivo INF, como se muestra en el ejemplo siguiente.
HKR, Ndi,FilterRunType,0x00010001 ,0x00000002
El valor 0x00000002 en el ejemplo anterior indica que el módulo de filtro es opcional. Para instalar un módulo de filtro obligatorio, establezca la entrada FilterRunType en 0x00000001. Para obtener más información, vea Controladores de filtro obligatorios.
Nota Se recomienda encarecidamente que un controlador de filtro ligero de supervisión (LWF) no sea obligatorio, a menos que se use en un entorno controlado en el que no haya ninguna modificación opcional de controladores LWF. Esto se debe a que un controlador LWF de supervisión obligatorio puede provocar un error en la modificación opcional de los controladores LWF FilterAttach. Un controlador LWF de supervisión está enlazado a cada filtro de modificación y enlace por diseño para facilitar la supervisión del tráfico de red en todos los niveles. Considere el caso siguiente:
- Una instancia de un controlador LWF de supervisión obligatoria se instala a través de un controlador LWF opcional que modifica.
- La modificación inferior del controlador LWF opcional no se puede conectar a un componente inferior. Esto hará que no se llame al controlador FilterAttach del controlador LWF de supervisión obligatoria.
- Dado que ahora no se carga una instancia de un controlador LWF obligatorio, NDIS no enlazará ningún protocolo (como TCP/IP) a la interfaz o NIC, lo que representa la interfaz que no se puede usar.
En el ejemplo siguiente se muestra cómo un archivo INF del controlador de filtro especifica el nombre del servicio.
HKR, Ndi,Service,,"NdisMon"
En este ejemplo, "NdisMon" es el nombre del servicio del controlador, ya que se notifica a NDIS. Tenga en cuenta que el nombre del servicio de un controlador de filtro puede ser diferente del nombre del binario para el controlador, pero normalmente son los mismos.
En el ejemplo siguiente se muestra cómo el archivo INF de filtro hace referencia al nombre del servicio del controlador de filtro cuando agrega ese servicio.
[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 archivo INF de filtro debe especificar al menos el nombre del servicio principal del filtro para el atributo CoServices , como se muestra en el ejemplo siguiente.
HKR, Ndi,CoServices,0x00010000,"NdisMon"
Para obtener más información sobre el atributo CoServices , vea Agregar Service-Related valores a la clave Ndi.
El valor FilterClass del archivo INF de un controlador de filtro determina su orden en una pila de filtros de modificación. Sin embargo, los controladores de filtro de supervisión no definen la clave FilterClass . En su lugar, el módulo de filtro de supervisión que se instala primero es más cercano al adaptador de minipuerto.
Debe definir las siguientes entradas en el archivo INF del controlador de filtro de supervisión para controlar los enlaces del controlador:
HKR, Ndi\Interfaces,UpperRange,,"noupper" HKR, Ndi\Interfaces,LowerRange,,"nolower" HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
Para obtener más información sobre cómo controlar los enlaces de controladores, vea Especificar relaciones de enlace de controladores de filtro.
Un archivo INF de filtro de supervisión puede especificar definiciones de parámetro comunes para el controlador de filtro, parámetros asociados a un adaptador específico y parámetros asociados a una instancia determinada (módulo de filtro). En el ejemplo siguiente se muestran algunas definiciones de parámetro comunes.
Precaución
El uso de HKR AddReg para colocar claves directamente bajo el estado del servicio es una infracción de cumplimiento. Estas claves deben agregarse en la clave Parámetros del servicio para que sea compatible.
[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"