驱动安装包制作:使用SetupCopyOEMInf函数 用installshield 即可完成安装

http://cysbox7.blog.163.com/blog/static/11587863320105975159520/

 

引用不知道哪位大牛的原话:

对于即插即用简单地说要对付2种情况
1。在你的设备未安装前,安装驱动程序这叫预先安装。
最简单的方法就是使用SetupCopyOEMInf函数。
具体做法是:
将SetupCopyOEMInf封装在一个动态库里。
用installshield将所有文件copy到一个临时目录。
调用动态库使用SetupCopyOEMInf函数copy临时目录下的inf文件(路径)。
installshield让计算机重启。
插上设备,自动识别。 
 2.你的设备已安装,弹出安装向导。
很简单,让用户搜索你的安装盘,即可完成安装。
 
懒得写dll了(其实是不会写- -),devcon dp_add调用SetupCopyOEMInf做了预安装



wdk文档中关于预安装的一段话
我刚开始以为预安装就是直接把驱动安上,白痴似的把驱动直接安上了,然后我机子上面之前的驱动没卸干净,添上设备后直接能用,偶就把安装程序当成一个版本交了,囧。。。

 

Preinstalling Driver Packages

To preinstall driver files, your device installation application should follow these steps:

1. On the target system, create a directory for the driver files. If your device installation application installs an application, the driver files should be stored in a subdirectory of the application directory.

2. Copy all files in the driver package from the distribution media to the directory created in step (1). The driver package includes the driver or drivers, the INF file, the catalog file, and other installation files.

3. Call  SetupCopyOEMInf specifying the INF file in the directory created in step (1). Specify SPOST_PATH for the OEMSourceMediaType parameter and specify NULL for the OEMSourceMediaLocation parameter. SetupCopyOEMInf copies the INF file for the driver package into the %windir%/Inf directory on the target system and directs Windows to store the source location of the INF file in its list of preprocessed INF files. SetupCopyOEMInf also processes the catalog file, so the PnP manager will install the driver the next time it recognizes a device listed in the INF file.

When the user plugs in the device, the PnP manager recognizes the device, finds the INF file copied by SetupCopyOEMInf, and installs the drivers copied in step (2). (For more information about copying INF files, see Copying INFs.)

 

 

 

安装时直接把inf文件拷windows/inf下,卸载时删除,防止被命名成oem*.inf,在某种情况下发生重复预注册,同时也便于卸载时删除inf文件

你可能感兴趣的:(驱动安装包制作:使用SetupCopyOEMInf函数 用installshield 即可完成安装)