配置修改筛选器驱动程序的 INF 文件
以下 NDIS 筛选器驱动程序安装问题与修改筛选器驱动程序有关。 若要创建自己的修改筛选器驱动程序 INF 文件,还可以改编 示例 NDIS 6.0 筛选器驱动程序。
在 INF 文件中将 类 INF 文件条目设置为 NetService 。 以下示例演示 INF 文件的示例 类 条目。
Class = NetService
筛选器驱动程序 INF 文件中的 DDInstall 节必须具有 “特征” 条目。 以下示例演示如何在筛选器 INF 文件中定义 “特征” 条目。
Characteristics=0x40000
0x40000值指示已设置NCF_LW_FILTER (0x40000) 。 筛选器驱动程序不得设置NCF_FILTER (0x400) 标志。 NCF_ Xxx 标志的值在 Netcfgx.h 中定义。 有关NCF_ Xxx 标志的详细信息,请参阅 网络 INF 文件中的 DDInstall 部分。
在 INF 文件中设置 NetCfgInstanceId INF 文件条目,如以下示例所示。
NetCfgInstanceId="{5cbf81bd-5055-47cd-9055-a76b2b4e3697}"
可以使用 Uuidgen.exe 工具为 NetCfgInstanceId 条目创建 GUID。
筛选器驱动程序的 INF 文件的 DDInstall 部分必须包含用于 Ndi 键的 Addreg 指令。 INF 文件必须在 Ndi 键下指定 Service 条目。 INF 文件的 service-install 部分中的 ServiceBinary 条目指定筛选器驱动程序的二进制文件的路径。 有关详细信息,请参阅将服务相关值添加到网络 INF 文件中的 Ndi 密钥和 DDInstall.Services 部分。
筛选器驱动程序 INF 文件中的 DDInstall 节必须具有 FilterType 和 FilterRunType 条目。 若要指定修改筛选器,请在 INF 文件中定义 FilterType 条目,如以下示例所示。
HKR, Ndi,FilterType,0x00010001 ,0x00000002
FilterType 值0x00000002指示筛选器是修改筛选器。
在 INF 文件中定义 FilterRunType 条目,如以下示例所示。
HKR, Ndi,FilterRunType,0x00010001 ,0x00000001
前面示例中的 0x00000001 值指示筛选器模块是必需的。 若要安装可选筛选器模块,请将 FilterRunType 条目设置为 0x00000002。 有关详细信息,请参阅 必需筛选器驱动程序。
以下示例演示修改筛选器驱动程序 INF 文件如何指定服务的名称。
HKR, Ndi,Service,,"NdisLwf"
在此示例中,NdisLwf 是报告给 NDIS 的驱动程序服务的名称。 请注意,筛选器驱动程序服务的名称可能不同于驱动程序的二进制文件的名称,但它们通常相同。
以下示例演示筛选器 INF 文件在添加该服务时如何引用筛选器驱动程序的服务的名称。
[Install.Services] AddService=NdisLwf,,NdisLwf_Service_Inst;, common.EventLog [NdisLwf_Service_Inst] DisplayName = %NdisLwf_Desc% ServiceType = 1 ;SERVICE_KERNEL_DRIVER StartType = 1 ;SERVICE_SYSTEM_START ErrorControl = 1 ;SERVICE_ERROR_NORMAL ServiceBinary = %13%\ndislwf.sys LoadOrderGroup = NDIS Description = %NdisLwf_Desc% AddReg = Common.Params.reg
筛选器 INF 文件必须至少为 CoServices 属性指定筛选器的主服务名称,如以下示例所示。
HKR, Ndi,CoServices,0x00010000,"NdisLwf"
有关 CoServices 属性的详细信息,请参阅 将服务相关值添加到 Ndi 密钥。
筛选器驱动程序的 INF 文件中的 FilterClass 值决定了它在筛选器堆栈中的顺序。 筛选器驱动程序必须定义 FilterClass 键。 驱动程序的类可以是下表中的值之一。
值 说明 scheduler
数据包计划筛选器服务。 此类筛选器驱动程序是可以存在于驱动程序堆栈中加密类筛选器之上的最高级别驱动程序。 数据包计划程序检测 802.1p 优先级分类,该分类按服务质量 (QoS) 信号组件提供给数据包,计划程序根据这些数据包的优先级将这些数据包级别发送到基础驱动程序。
加密
加密类筛选器驱动程序存在于计划程序与压缩类筛选器之间。
compression
加密和 vpn 类筛选器之间存在压缩类筛选器驱动程序。
VPN
VPN 类筛选器驱动程序存在于压缩和负载均衡筛选器驱动程序之间。
loadbalance
负载均衡筛选器服务。 此类筛选器驱动程序存在于数据包计划和故障转移驱动程序之间。 负载均衡筛选器服务通过在其基础微型端口适配器集上分配工作负载来平衡数据包传输的工作负载。
故障转移
故障转移筛选器服务。 此类筛选器驱动程序存在于负载均衡和诊断驱动程序之间。
诊断
诊断筛选器驱动程序位于堆栈中的故障转移驱动程序下方。
自定义
自定义类中的筛选器驱动程序位于诊断驱动程序下方。
provider_address
提供程序地址筛选器驱动程序位于内置 Hyper-V 网络虚拟化ms_wnv筛选器下方,对提供程序地址 (PA) 数据包进行操作。
注意 如果多个筛选器驱动程序具有相同的 FilterClass,则它们都将添加到筛选器驱动程序的分层堆栈中。 系统为每个具有相同 FilterClass 的修改筛选器驱动程序分配分层顺序。 在某些情况下,系统管理员可以重新排列具有相同 FilterClass 的筛选器驱动程序的相对顺序。
以下示例演示了一个示例 FilterClass 。
HKR, Ndi,FilterClass,, compression
只有 Hyper-V 交换机扩展筛选器驱动程序在 Hyper-V 可扩展交换机中有效。 Hyper-V 可扩展交换机筛选器驱动程序必须使用下表中的值之一定义 FilterClass 键。
值 说明 ms_switch_capture
从 NDIS 6.30 开始,捕获驱动程序监视 Hyper-V 可扩展交换机驱动程序堆栈中的数据包流量。 此类筛选器驱动程序存在于堆栈中的自定义驱动程序下方。
有关此类驱动程序的详细信息,请参阅 捕获扩展。
ms_switch_filter
从 NDIS 6.30 开始,筛选驱动程序会筛选数据包流量,并强制实施端口或交换机策略,以便通过可扩展交换机驱动程序堆栈传递数据包。 此类筛选器驱动程序存在于堆栈 中的ms_switch_capture 驱动程序下方。
有关此类驱动程序的详细信息,请参阅 筛选扩展。
ms_switch_forward
从 NDIS 6.30 开始,转发驱动程序筛选器执行与筛选驱动程序相同的功能。 转发驱动程序还会将数据包转发到可扩展交换机端口和从可扩展交换机端口转发数据包。 此类筛选器驱动程序存在于堆栈 ms_switch_filter 驱动程序下方。
有关此类驱动程序的详细信息,请参阅 转发扩展。
必须在修改筛选器驱动程序 INF 文件中定义以下条目,以控制驱动程序绑定。
HKR, Ndi\Interfaces,UpperRange,,"noupper" HKR, Ndi\Interfaces,LowerRange,,"nolower" HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
有关控制驱动程序绑定的详细信息,请参阅 指定筛选器驱动程序绑定关系。
修改筛选器 INF 文件可以为驱动程序和与特定适配器关联的参数指定通用参数定义。 以下示例演示一些常见的参数定义。
注意
使用 HKR AddReg 将密钥直接置于服务状态下是违反合规性的。 需要将这些密钥添加到服务的“参数”键下,才能符合要求。
[Common.Params.reg]
HKR, FilterDriverParams\DriverParam, ParamDesc, , "Driverparam for lwf"
HKR, FilterDriverParams\DriverParam, default, , "5"
HKR, FilterDriverParams\DriverParam, type, , "int"
HKR, FilterAdapterParams\AdapterParam, ParamDesc, , "Adapterparam for lwf"
HKR, FilterAdapterParams\AdapterParam, default, , "10"
HKR, FilterAdapterParams\AdapterParam, type, , "int"