本帖最后由 lbw2007 于 2026-5-13 09:58 编辑
你贴出来的这个“优化版”和豆包给的版本,核心问题都一样——缺了最关键的服务安装节 (Service Install),只靠目前的内容,驱动是无法正常工作的。 提示“添加成功”只说明 INF 格式能被识别、文件复制到了系统,但系统并不知道如何把 iaStorVD.sys 启动起来。设备通常会显示“该设备无法启动(代码 10)”或“驱动程序未安装(代码 28)”。
为什么不行?
VMD 驱动作为 SCSI Miniport,必须通过 INF 安装一个引导启动的内核服务。你现在的 INF 里只有 CopyFiles 和 AddReg,其中的 HKR,,StartType 还被写到了设备参数里,完全不起作用。真正的服务需要 [Install.NT.Services] 节来定义。 正确的精简版(基于你的硬件ID)
下面直接补全服务安装节,你可以替换掉之前的内容:
- [Version]
- Signature="$Windows NT$"
- Class=SCSIAdapter
- ClassGuid={4D36E97B-E325-11CE-BFC1-08002BE10318}
- Provider=%INTEL%
- DriverVer=2021/05/10,18.7.6.1010
- ; 如果没有原版iaStorVD.cat,或修改过INF,建议删除下一行,否则签名会失效
- CatalogFile=iaStorVD.cat
- [Manufacturer]
- %INTEL% = INTEL,NTamd64
- [INTEL.NTamd64]
- %PCI_VMD.Desc% = VMD_inst, PCI\VEN_8086&DEV_A07C
- %PCI_VMD.Desc% = VMD_inst, PCI\VEN_8086&DEV_467C
- %PCI_VMD.Desc% = VMD_inst, PCI\VEN_8086&DEV_7A7C
- %PCI_VMD.Desc% = VMD_inst, PCI\VEN_8086&DEV_517C
- [VMD_inst.NTamd64]
- CopyFiles = Only_VMD_Core
- [Only_VMD_Core]
- iaStorVD.sys
- ; 关键:安装驱动服务
- [VMD_inst.NTamd64.Services]
- AddService = iaStorVD, 0x2, VMD_Service_Inst
- [VMD_Service_Inst]
- ServiceType = 1 ; SERVICE_KERNEL_DRIVER
- StartType = 0 ; SERVICE_BOOT_START(启动时加载)
- ErrorControl = 1 ; SERVICE_ERROR_NORMAL
- ServiceBinary = %12%\iaStorVD.sys
- LoadOrderGroup = SCSI Miniport
- AddReg = VMD_Service_AddReg
- [VMD_Service_AddReg]
- HKR,,EnumPropPagesName,,"scsiprop.dll"
- [Strings]
- INTEL = "Intel Corporation"
- PCI_VMD.Desc = "Intel VMD Volume Management Device"
复制代码 使用建议
确保 iaStorVD.sys 和这个 .inf 文件在同一个文件夹。 如果你的硬件 ID 不在这四个之中,去原版 INF 里找到自己对应的 PCI\VEN_8086&DEV_XXXX,照着格式加进去即可。 Windows 安装界面加载时,如果因为签名问题无法识别,就在安装盘启动时按 F7 禁用驱动强制签名(或者在 INF 里暂时删除 CatalogFile 那行)。
用这个版本再去加载,理论上设备管理器里就不会再出现感叹号了。
==== ==== ==== ==== 其他说明:
在inf中,安装驱动程序时,比如SCSIAdapter类设备,如果要安装一个服务(驱动),需要在DDInstall节(这里为VMD_inst.NTamd64)下面要么有子节 .Services 来定义AddService,要么手动添加服务注册。但通常,如果没有AddService,只有CopyFiles和AddReg,在AddReg中写入HKR,,Service,,iaStorVD 是把设备软件键(设备参数)中设置Service值为iaStorVD,但驱动加载并不靠设备参数中的Service,而是靠设备枚举器的服务键。实际Windows即插即用过程:当匹配到设备,会根据inf中的硬件ID和安装节,会创建设备节点,并会为该设备创建服务(如果指定了AddService的话)。如果没有AddService,只设置HKR中的Service项,可能仅仅注册了设备属性,并不会真正创建服务或启动驱动。因此,精简inf必须包含服务安装节,否则驱动可能无法加载,设备管理器会显示“这个设备未安装驱动程序”或错误代码。原版Intel VMD inf中肯定有,然后VMD_Service_Reg用于添加其他服务参数,如EnumPropPagesName。但是优化版缺少关键的服务安装节。
|