hur.cn - 华软网

 热门搜索

为什么SetupCopyOEMInf 安装驱动后不能用,需要插拔一次才可以?

  作者:未知    来源:网络    更新时间:2010/12/3
我用SetupCopyOEMInf 装置了驱动程序。

SetupCopyOEMInf(
  "c:\\xx\\wdtoken.inf",
  "c:\\xx",
  SPOST_PATH,
  0,
  NULL,
  0,
  NULL,
  NULL
);

装置成功,然则第一次插入设备的时候能够正确识别设备类型,然则不能用,毛病代码10,提醒windows未能正确装置驱动程序,设备可能没法运用。拔下来在插上就能用了。或是把设备停用后再启用状态也就正常了。

请问这是怎么回事,应该怎么解决?

inf以下:
C++">
;
; wdtoken.inf
;
; WatchData WatchKey Driver Installation File.
;
; (C) Copyright 2004-2006 WatchData System Co., Ltd.
;
;
[Version]
Signature  ="$WINDOWS NT$"
Provider   =%WatchData%
ClassGUID={36fc9e60-c465-11cf-8056-444553540000}
Class=USB

CatalogFile=wdtoken.cat
DriverVer=07/08/2005,1.02.01.00

;
; Source Media 
;  
[SourceDisksNames]
1=%DiskName%,,,

[SourceDisksFiles]
wdtoken.sys=1,,
wdkeyenum.sys=1,,
wdkeyifd.sys =1,,

[DestinationDirs]
DefaultDestDir   = 12
wdKeyEnum_Files  = 12
wdKeyIFD_Files   = 12
wdToken_Files    = 12

[wdToken_Files]
wdtoken.sys,,,0x00000062

[wdKeyEnum_Files]
wdkeyenum.sys,,,0x00000062

[wdKeyIFD_Files]
wdkeyifd.sys,,,0x00000062

;
; Manufacture
;
[Manufacturer]
%WatchData%=WatchData


;
; Models
;
[WatchData]
%PID_ENUM%        =wdKeyEnum_Install,WDKey\WDKeyEnum
%PID_IFD%         =wdKeyIFD_Install, WdKeyEnum\WdKeyIFD
%PID_PRO%         =wdToken_Install,USB\VID_6513&PID_0089
%PID_READER_ST%   =wdToken_Install,USB\VID_6513&PID_0189


%PID_PRO_0101%  =wdToken_Install,USB\VID_163C&PID_0101
%PID_PRO_0201%  =wdToken_Install,USB\VID_163C&PID_0201
%PID_PRO_0301%  =wdToken_Install,USB\VID_163C&PID_0301
%PID_PRO_0401%  =wdToken_Install,USB\VID_163C&PID_0401

%PID_PRO_0800%  =wdToken_Install,USB\VID_163C&PID_0800
%PID_PRO_0801%  =wdToken_Install,USB\VID_163C&PID_0801


;
; Exclude selected models from display
;
[ControlFlags]
ExcludeFromSelect = *

;
; WatchKey (Pro) Driver Installation
;
[wdToken_Install.NTx86]
CopyFiles=wdToken_Files,wdKeyEnum_Files,wdKeyIFD_Files
DriverVer=07/08/2005,1.01.01.00

[wdToken_Install.NTx86.Services]
AddService=wdToken,0x00000002,wdToken_AddService

[wdToken_AddService]
DisplayName    = %TOKEN_DISPNAME%
Description    = %TOKEN_SVCDESC%
ServiceType    = 1 ; SERVICE_KERNEL_DRIVER
StartType      = 3 ; SERVICE_DEMAND_START
ErrorControl   = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\wdtoken.sys
LoadOrderGroup = Extended Base



;
; WatchKey Enumerator Driver Installation
;
[wdKeyEnum_Install.NTx86]
CopyFiles=wdKeyEnum_Files,wdKeyIFD_Files,wdToken_Files
AddReg   =wdKeyEnum_AddReg
DriverVer=07/08/2005,1.01.01.00

[wdKeyEnum_Install.NTx86.Services]
AddService=wdKeyEnum,0x00000002,wdKeyEnum_AddService

[wdKeyEnum_AddService]
DisplayName    = %ENUM_DISPNAME%
Description    = %ENUM_SVCDESC%
ServiceType    = 1 ; SERVICE_KERNEL_DRIVER
StartType      = 3 ; SERVICE_DEMAND_START
ErrorControl   = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\wdkeyenum.sys
LoadOrderGroup = Extended Base

[wdKeyEnum_AddReg]
; The number of virtual pc/sc smarcard reader
HKLM,SYSTEM\CurrentControlSet\Services\wdKeyEnum,NumberOfDevices, 0x10003,0


;
; WatchKey Virtual Reader Driver Installation
;
[wdKeyIFD_Install.NTx86]
CopyFiles=wdKeyEnum_Files,wdKeyIFD_Files,wdToken_Files
AddReg   =wdKeyIFD_AddReg
DriverVer=07/08/2005,1.01.01.00

[wdKeyIFD_Install.NTx86.Services]
AddService=wdKeyIFD, 0x00000002,wdKeyIFD_AddService,wdKeyIFD_EventLog

[wdKeyIFD_AddService]
DisplayName    = %IFD_DISPNAME%
Description    = %IFD_SVCDESC%
ServiceType    = 1 ; SERVICE_KERNEL_DRIVER
StartType      = 3 ; SERVICE_DEMAND_START
ErrorControl   = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary  = %12%\wdkeyifd.sys
LoadOrderGroup = Extended Base

[wdKeyIFD_EventLog]
AddReg = wdKeyIFD_EventLog_AddReg

[wdKeyIFD_EventLog_AddReg]
HKR,,EventMessageFile,0x00020000,%12%\wdkeyifd.sys
HKR,,TypesSupported,0x00010001,7

[wdKeyIFD_AddReg]
HKLM,SYSTEM\CurrentControlSet\Services\wdKeyIFD,EnablePCSC, 0x10003,0


; Default 
[Strings]
WatchData        = "WatchData System Co., Ltd."
DiskName         = "WatchData USB Key Installation Disk"
PID_ENUM   = "WatchData USB Key Enumerator"
PID_IFD          = "WatchData USB Key Virtual Reader"
PID_PRO          = "WatchData USB Key Pro(ST)"
PID_READER_ST    = "WatchData USB Smartcard Reader(ST)"

PID_PRO_0101     = "WatchData USB Key Pro(HT)"
PID_PRO_0201     = "WatchData USB Key Pro(ST)"
PID_PRO_0301     = "WatchData USB Key"
PID_PRO_0401     = "WatchData USB Key Pro(ZTE)"


PID_PRO_0800     = "WatchData USB Key"
PID_PRO_0801     = "WatchData CRW-VIII Smartcard Reader"


TOKEN_DISPNAME   = "WatchData USB Key"
TOKEN_SVCDESC    = "WatchData USB Key Service"
ENUM_DISPNAME   = "WatchData USB Key Enumerator"
ENUM_SVCDESC   = "WatchData USB Key Enumerator Service"
IFD_DISPNAME  = "WatchData USB Key Virtual Reader"
IFD_SVCDESC  = "WatchData USB Key Virtual Reader Service"




---华软 网友回答---
装置完了以后,查看驱动是否RUNNING起来没,没有再SC Start启用
---华软网友回复---
帮你顶,一样遇到这个问题。非常期待结果。
---华软网友回复---
引用 1 楼 oyljerry 的回复:
装置完了以后,查看驱动是否RUNNING起来没,没有再SC Start启用


win2000上没有sc.exe,是否是只可用BOOL WINAPI StartService(
  __in      SC_HANDLE hService,
  __in      DWORD dwNumServiceArgs,
  __in_opt  LPCTSTR* lpServiceArgVectors
);
启用服务?

能够在inf资料中增加指令启用服务吗?

---华软网友回复---
是否是驱动的问题
---华软网友回复---
引用 3 楼 leechiyang 的回复:
引用 1 楼 oyljerry 的回复:
装置完了以后,查看驱动是否RUNNING起来没,没有再SC Start启用


win2000上没有sc.exe,是否是只可用BOOL WINAPI StartService(
  __in      SC_HANDLE hService,
  __in      DWORD dwNumServiceArgs,
  __in_opt  LP……

用API能够启用,同时QueryService查询
---华软网友回复---
好难的问题, 学习了.
---华软网友回复---
请问:oyljerry

我在清洁的虚拟机中尝试制作的装置程序,该虚拟机以前没有插入过我运用的USB 设备,
我执行完装置程序后,插入USB 设备前,
执行sc query type= driver state= all,显示的列表中没有我装置的服务(wdToken),
执行sc query wdToken,提醒
C++"> 

C:\Documents and Settings\hebca>sc query wdToken

[SC] EnumQueryServicesStatus:OpenService FAILED 1060


注册表中搜索wdToken,也搜索不就所有信息。
system32\drivers资料夹里面没有
wdtoken.sys, wdkeyenum.sys, wdkeyifd.sys驱动程序资料(要装置的驱动资料)

第一次插入USB设备后,
执行sc query wdToken提醒:
C++"> 
C:\Documents and Settings\hebca>sc query wdToken

SERVICE_NAME: wdToken
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 1  STOPPED
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 1077       (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

C:\Documents and Settings\hebca>net helpmsg 1077

上次启用之后,仍未尝试引导服务。


system32\drivers资料夹里面出现了wdtoken.sys, wdkeyenum.sys, wdkeyifd.sys资料
设备管理器查看该USB 设备,上面有个黄色的叹号,提醒该设备没法启用。 (代码 10)

执行sc start wdToken
 
C:\Documents and Settings\hebca>sc start wdToken

SERVICE_NAME: wdToken
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        PID                : 0
        FLAGS              :

设备上面依然有个黄色叹号

把USB设备拔下来,再插上,一切正常。

请问,这是怎么回事?应该怎么措置惩罚?
inf资料和sys资料都是我从另外一个装置包里面提掏出来的,原来的装置包没有问题,装置完成后就能用。


---华软网友回复---
我运行原版的驱动程序装置包,装置完后,wdKeyEnum、wdKeyIFD的状态正常,wdToken不正常。

C:\Documents and Settings\hebca>sc query wdKeyEnum

SERVICE_NAME: wdKeyEnum
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

C:\Documents and Settings\hebca>sc query wdKeyIFD

SERVICE_NAME: wdKeyIFD
        TYPE               : 1  KERNEL_DRIVER
        STATE              : 4  RUNNING
                                (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

C:\Documents and Settings\hebca>sc query wdToken
[SC] EnumQueryServicesStatus:OpenService FAILED 1060:



我如何才能把wdKeyEnum、wdKeyIFD运行起来?
---华软网友回复---
再顶起来
如何装置完驱动后再装置2个虚拟设备呢(下面的设备)?
%PID_ENUM%        =wdKeyEnum_Install,WDKey\WDKeyEnum
%PID_IFD%         =wdKeyIFD_Install, WdKeyEnum\WdKeyIFD
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。