驱动的安装方式大至有二种:
1,在插上设备的时候进行安装,即使用函数UpdateDriverForPlugAndPlayDevice()。
2,在没有物理设备的时候安装,即通常所说的驱动预安装(SetupCopyOEMInf)。
需要注意的是:
1,SetupCopyOEMInf()只是生成一个oem*.inf文件和oem*.pnf文件到Windows\inf\文件夹中,
即没有修改任何注册表,也没有复制文件。生成的pnf文件包含源文件路径信息,以便在真正
插上设备的时候能够找到相应的sys等文件。
2,UpdateDriverForPlugAndPlayDevice()在没有插上设备的时候是会执行失败的。
Windows插上设备到找到合适的驱动的大致步骤是:
1,插上设备后Windows设备信息到硬件键[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\下去寻找相应的项。
2,如果在Enum键下没有相应的信息,则Windows到预安装目录中去寻找相应的oem*.inf和oem*.pnf文件(oem*.inf和oem*.pnf只要前面的文件名相同就可以,故如果对二个同时改成相同的名字不会有什么影响).
如果进行了预安装,则可以在这里找到相应的inf和pnf文件。于是弹出发现新硬件对话框,点自动安装就可成功(这个对话框可以通过协助安装程序搞掉它)。安装时会弹出徽标论证的对话框(XP下可以通过改注册表的方式搞掉,Vista下暂没发现办法)
3,注册CoInstall的方法即修改以下键值:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CoDeviceInstallers],子键名为要注册CoInstall的GUID,值为dll的名字和函数名。
|