如何为wdm驱动做预安装?

constMax 2010-08-02 01:51:30
xp下为自己的usb驱动做预安装
1。把sys文件 inf文件 和cat文件拷到 system32/driver下
2。执行SetupCopyOEMInf("C: \\WINDOWS\\system32\\drivers\\USBBulk.inf",
NULL,
SPOST_PATH,
SP_COPY_NEWER_OR_SAME,
NULL,
0,
NULL,
NULL);后inf目录下生成一个OEM12.inf和OEM12.PNF

3。插入USB设备后依旧弹出发现新硬件对话框 这时只要点自动安装就行了

我的目标是不弹出发现新硬件对话框的 大家有没有好的办法啊
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
constMax 2010-08-04
  • 打赏
  • 举报
回复
看ddk文档是这么说的啊,也不知道什么原因。
本来还想投机取巧省点事的,我还是老老实实的用setupapi把自动安装的那部分功能一步步实现吧。

[Quote=引用 4 楼 constmax 的回复:]

引用 1 楼 huntercao 的回复:
做预安装,你的第1步拷贝*.sys, *.cat文件的动作是不需要的。


;
; File Name: USBBulk.inf
; Install information file for USBBulk Driver
;
; Generated by C DriverWizard 3.2.0 (Build 2485)
; Requ……
[/Quote]
曹大夯 2010-08-03
  • 打赏
  • 举报
回复
直接看INF文件比较费劲。看不出有多大问题。

你可以将系统目录下的setupapi.log文件打开看一下,内部有驱动安装日志。
还可以用WDK工具checkinf来校验一下你的INF。
constMax 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huntercao 的回复:]
做预安装,你的第1步拷贝*.sys, *.cat文件的动作是不需要的。
[/Quote]

;
; File Name: USBBulk.inf
; Install information file for USBBulk Driver
;
; Generated by C DriverWizard 3.2.0 (Build 2485)
; Requires DDK Only
; File created on 8/2/2010
;

;--------- Version Section ---------------------------------------------------

[Version]
Signature="$WINDOWS NT$"
Class=USBBulk
ClassGUID={19C2399B-2374-4BE5-A2CF-44283133F67E}
Provider=%Provider%
DriverVer=8/2/2010,1.00.0000
CatalogFile=USBBulk.cat

[ControlFlags]
; Pnp drivers should not be installable via non-PnP hardware dialogs
ExcludeFromSelect = *

;--------- ClassInstall/ClassInstall32 Section -------------------------------

; Not necessary if using a standard class

; 9X Style
[ClassInstall]
Addreg=USBBulkClassAddReg

; NT Style
[ClassInstall32]
Addreg=USBBulkClassAddReg

[USBBulkClassAddReg]
;reg-root,[subkey],[value-entry-name],[flags],[value]
HKR,,,%REG_SZ%,%DeviceClassName%
HKR,,Icon,,"-18"
HKR,,DeviceCharacteristics,%REG_DWORD%,0x100 ; FILE_DEVICE_SECURE_OPEN
HKR,,Security,,"D:P(A;;GR;;;WD)(A;;GA;;;SY)(A;;GA;;;BA)" ; generic read - everybody
; generic all access - system and admin

;--------- DestinationDirs Section -------------------------------------------

[DestinationDirs]
DefaultDestDir = 10
USBBulk_Files_Driver = 12


;--------- SourceDiskNames and SourceDiskFiles Section -----------------------
; These sections identify source disks and files for installation.

[SourceDisksNames]
1 = %DiskId1%,,,""

[SourceDisksFiles]
USBBulk.sys = 1,,


;--------- Manufacturer and Models Sections ----------------------------------

[Manufacturer]
%MfgName% = USBBulk_Mfg

[USBBulk_Mfg]
; DisplayName Section DeviceId
%USBBulk_DeviceDesc%=USBBulk_DDI, USB\VID_CCCC&PID_0008

;---------- DDInstall Sections -----------------------------------------------
; --------- Windows 98 -----------------

; Experimentation has shown that DDInstall root names greater than 19 characters
; cause problems in Windows 98

[USBBulk_DDI]
CopyFiles=USBBulk_Files_Driver
AddReg=USBBulk_9X_AddReg

[USBBulk_9X_AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,USBBulk.sys
HKR,,Description,,%USBBulk_DeviceDesc%

; --------- Windows NT -----------------

[USBBulk_DDI.NT]
CopyFiles=USBBulk_Files_Driver

[USBBulk_DDI.NT.Services]
Addservice = USBBulk, %FLG_ADDREG_NOCLOBBER%, USBBulk_Service

; --------- Service ----------------------

[USBBulk_Service]
DisplayName = %USBBulk_SvcDesc%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
ServiceBinary = %12%\USBBulk.sys
LoadOrderGroup = Extended Base

; --------- Files ----------------------

[USBBulk_Files_Driver]
USBBulk.sys,,,2

;--------- Strings Section ---------------------------------------------------

[Strings]
Provider = "Opteeq Technique"
MfgName = "Opteeq Technique"
USBBulk_DeviceDesc = "Opteeq 2000"
DeviceClassName="Class for Opteeq 2000"
USBBulk_SvcDesc = "Driver for Opteeq 2000"
DiskId1 = "USBBulk Device Installation Disk #1"

REG_SZ = 0x00000000
REG_MULTI_SZ = 0x00010000
REG_EXPAND_SZ = 0x00020000
REG_BINARY = 0x00000001
REG_DWORD = 0x00010001
REG_NONE = 0x00020001

SERVICE_KERNEL_DRIVER = 0x00000001
SERVICE_FILE_SYSTEM_DRIVER = 0x00000002
SERVICE_ADAPTER = 0x00000004
SERVICE_RECOGNIZER_DRIVER = 0x00000008

SERVICE_BOOT_START = 0x0
SERVICE_SYSTEM_START = 0x1
SERVICE_AUTO_START = 0x2
SERVICE_DEMAND_START = 0x3
SERVICE_DISABLED = 0x4

SERVICE_ERROR_IGNORE = 0x00000000
SERVICE_ERROR_NORMAL = 0x00000001
SERVICE_ERROR_SEVERE = 0x00000002
SERVICE_ERROR_CRITICAL = 0x00000003

FLG_ADDREG_NOCLOBBER = 0x00000002
FLG_ADDREG_DELVAL = 0x00000004
FLG_ADDREG_APPEND = 0x00000008
FLG_ADDREG_KEYONLY = 0x00000010
FLG_ADDREG_OVERWRITEONLY = 0x00000020
FLG_ADDREG_64BITKEY = 0x00001000
FLG_ADDREG_KEYONLY_COMMON = 0x00002000
FLG_ADDREG_32BITKEY = 0x00004000

constMax 2010-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huntercao 的回复:]

做预安装,你的第1步拷贝*.sys, *.cat文件的动作是不需要的。
[/Quote]

没出插入设备后还是弹出了发现新设备对话框,需要点自动安装才能完成。
但自动安装时有两次好像弹出inf文件可能是95或者以后平台的。其他的几次都是正常的。
难道inf文件有问题?一会我把inf文件发出来,你们帮我看看。
曹大夯 2010-08-02
  • 打赏
  • 举报
回复
没看到重点,你的操作步骤应该没有问题的。安装出错了没有?

预安装一帮情况下不建议将*.inf, *.sys, *.cat文件拷贝到System目录下。你可以将整个安装包放到一个临时目录,然后,SetupCopyOEMInf,系统会在INF目录下生成oem*.inf,oem*.pnf。在对应设备进入系统的时候,系统就能找到对应的INF进行拷贝安装了。
曹大夯 2010-08-02
  • 打赏
  • 举报
回复
做预安装,你的第1步拷贝*.sys, *.cat文件的动作是不需要的。

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧