usb modem driver install very slowly

Dear all
Our usb modem driver installation is very slow, the last window is copy sys file. This window will keep in serveral minutes, but usb modem device is ok at this time.
how to reduce the installation time?

thank you very much.
The following is the my inf file

[Version]
CatalogFile = modemFile.cat
Signature = “$CHICAGO$”
Class = Modem
CLASSGUID = {4D36E96D-E325-11CE-BFC1-08002BE10318}
Provider = %Denny%
DriverVer = 10/30/2007,2.0.5

; ==============================================================
; =================== Table of Contents ========================
; ==============================================================
[Manufacturer]
%Denny Telecom% = Denny Telecom

; ==============================================================
; ================= Control Flags Sections =====================
; ==============================================================
[ControlFlags]
ExcludeFromSelect = * ; Remove all devices listed in this INF file

; ==============================================================
; =================== Driver Sections ===========================
; ==============================================================
[DennyTelecom] ; Device ID match
%Denny_USB_MODEM_DEVICE% = DennyUsbModem, USB\VID_15EB&PID_0001&MI_00

; ==============================================================
; ---------------- Windows 2000 & XP Sections ------------------
; ==============================================================
[DennyUsbModem.NT] ; What to do when you have match
include = MDMGL007.INF, mdmgl004.inf, mdmgl001.inf
;CopyFiles = DrvFiles
;AddReg = All, USB, MfgAddReg, DennyUsbModem.AddReg, EXTERNAL, MDMGL004.ExtraCID
AddReg = All, USB, MfgAddReg, DennyUsbModem.AddReg, EXTERNAL

; ============================================================
; ---------------- Windows 98SE/ME Sections ------------------
; ============================================================
;[DennyUsbModem] ; What to do when you have match
;include = MDMGL007.INF, mdmgl004.inf, mdmgl001.inf
;CopyFiles = DrvFiles
;AddReg = All, USB, MfgAddReg, DennyUsbModem.AddReg, EXTERNAL, MDMGL004.ExtraCID
;AddReg = All, USB, MfgAddReg, DennyUsbModem.AddReg, EXTERNAL

; ==============================================================
; =================== Copy Files Section =======================
; ==============================================================
;[DestinationDirs]
;DrvFiles = 10,System32\Drivers ; \Windows\System32\drivers

;[DrvFiles]
;DennyUsbModem.sys,0x2

;[SourceDisksFiles]
;DennyUsbModem.sys = 1,

;[SourceDisksNames]
;1 = %SOURCE_DISKS_NAMES%

; ==============================================================
; =============== Services Description Sections ================
; ==============================================================
[DennyUsbModem.NT.Services]
DelService = DennyUsbModemDriver, 0x00000204
AddService = DennyUsbModemDriver, 0x00000000, LowerFilter_Service_Install
;AddService = DennyUsbModemDriver, 0x00000138, LowerFilter_Service_Install

[DennyUsbModem.NT.HW] ; Reference to put ChildID key in hardware devnode
AddReg = LowerFilterAddReg, DeviceAddReg

[LowerFilterAddReg]
HKR,“LowerFilters”, 0x00010000, “DennyUsbModemDriver”

[LowerFilter_Service_Install]
DisplayName = %DESCRIPTION%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %10%\system32\drivers\DennyUsbModem.sys

; ==============================================================
; ================= Common AddReg Sections =====================
; ==============================================================
; Property providers can be registered for a specific device by
; using the following addreg entry in the device install section.
; Doing this makes HKR relative to the driver section and thus
; is invoked only for the specific device.

[DeviceAddReg]
HKR,“DebugEnable”, 0x10001, 1
HKR,“DebugLevel”, 0x10001, 0x00000000
HKR,“DebugAreas”, 0x10001, 0x00000000
HKR,“DebugPrintingEnable”, 0x10001, 1
HKR,“SelectSuspendEnable”, 0x10001, 1
HKR,“PowerConservationIdleTimeout”, 0x10001, 0
HKR,“PerformanceIdleTimeout”, 0x10001, 0
HKR,“SerialNumber”, 0x10001, 32

;[ServiceAddReg]
;HKR,“Parameters”,“LastSerialNumberUsed”, 0x10001,
;HKR,“Parameters”,“MaxSerialNumber”, 0x10001,
;HKR,“Parameters”,“SerialNumbersUsed”, 0x10001,

; ==============================================================
; ================= Common AddReg Sections =====================
; ==============================================================
[USB]
;PortDriver entry should be wdmmdmld.vxd for driverbased modems
;and serial.vxd for controllered modems.
HKR,PortDriver,0,wdmmdmld.vxd
HKR,DeviceType,1,02
; BEN –> Was HKR,PortDriver,0,3ccport.vxd

[All]
HKR,FriendlyDriver,Unimodem.vxd
HKR,DevLoader,*VCOMM
HKR,ConfigDialog,modemui.dll
HKR,PortSubClass,1,02
HKR,EnumPropPages,“modemui.dll,EnumPropPages”
HKR, Init, 1, “ATZE0Q0V1”
HKR, Responses, “OK”, 1, 00, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “ERROR”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT”, 1, 02, 00, 00,00,00,00, 00,00,00,00

[DennyUsbModem.AddReg]
HKR, Properties, 1, 00,00,00,00, FF,00,00,00, FF,00,00,00, 00,00,00,00, 00,00,00,00, 00,03,00,00, 00,84,03,00, 00,84,03,00

[EXTERNAL]
HKR, DeviceType, 1, 01

[MfgAddReg]
HKR, Init, 1, “ATZE0Q0V1”
;HKR, Init, 2, “ATE0Q0V1”
HKR, Init, 2, “ATE0Q0V1&F&D2&C1S0=0”

HKR, Monitor, 1, “ATS0=0”
HKR, Monitor, 2, “None”
HKR, Answer, 1, “ATA”
HKR, Hangup, 1, “ATH”
HKR, Reset, “ATZ”

HKR, InactivityScale, 1, 0a,00,00,00

HKR, Settings, Prefix, “AT”
HKR, Settings, Terminator, “”
HKR, Settings, DialPrefix, “D”
HKR, Settings, DialSuffix, “”
HKR, Settings, Pulse, “P”
HKR, Settings, Tone, “T”

HKR, Settings, CallSetupFailTimer,“S7=<#>”
;HKR, Settings, InactivityTimeout, “S30=<#>”
HKR, Settings, InactivityTimeout, " "

HKR, Settings, Blind_Off, “X4”
HKR, Settings, Blind_On, “X3”

HKR, Settings, FlowControl_Off, “”
HKR, Settings, FlowControl_Hard, “”
HKR, Settings, FlowControl_Soft, “”

; These are the Hayes responses.
; Differences for non-Hayes modems should be addressed in the specific modem/manufacturer sections
; | State
; | Options (Compression, Error-Correction, Cellular)
; | DCE Rate
; | DTE Rate
; DTE/DCE speeds will not be exact for generic modems because we will
; treat CONNECT ### as a DCE speed when some modems will report it as DTE.
HKR, Responses, “RING”, 1, 08, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO CARRIER”, 1, 04, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO DIALTONE”, 1, 05, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “BUSY”, 1, 06, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO ANSWER”, 1, 07, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “0”, 1, 00, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “2”, 1, 08, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “3”, 1, 04, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “4”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “6”, 1, 05, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “7”, 1, 06, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “8”, 1, 07, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “OK”, 1, 00, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “RING”, 1, 08, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO CARRIER”, 1, 04, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “ERROR”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO DIALTONE”, 1, 05, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO DIAL TONE”,1, 05, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “BUSY”, 1, 06, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “NO ANSWER”, 1, 07, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “FAX”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “DATA”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “VOICE”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “RINGING”, 1, 01, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “DIALING”, 1, 01, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “RRING”, 1, 01, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “DELAYED”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “BLACKLISTED”, 1, 03, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “+FCERROR”, 1, 03, 00, 00,00,00,00, 00,00,00,00

HKR, Responses, “CONNECT”, 1, 02, 00, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT/ARQ”, 1, 02, 02, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT/REL”, 1, 02, 02, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT/MNP”, 1, 02, 02, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT/LAP-M”, 1, 02, 02, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT/V42BIS”, 1, 02, 03, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT/V42b”, 1, 02, 03, 00,00,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300”, 1, 02, 00, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300/ARQ”, 1, 02, 02, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300/REL”, 1, 02, 02, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300/MNP”, 1, 02, 02, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300/LAP-M”, 1, 02, 02, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300/V42BIS”, 1, 02, 03, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 300/V42b”, 1, 02, 03, 2C,01,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600”, 1, 02, 00, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600/ARQ”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600/REL”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600/MNP”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600/LAP-M”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600/V42BIS”, 1, 02, 03, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 600/V42b”, 1, 02, 03, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600”, 1, 02, 00, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600/ARQ”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600/REL”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600/MNP”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600/LAP-M”, 1, 02, 02, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600/V42BIS”, 1, 02, 03, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 0600/V42b”, 1, 02, 03, 58,02,00,00, 00,00,00,00
HKR, Responses, “CONNECT 1200”, 1, 02, 00, B0,04,00,00, 00,00,00,00
HKR, Responses, “CONNECT 1200/ARQ”, 1, 02, 02, B0,04,00,00, 00,00,00,00
HKR, Responses, “CONNECT 1200/REL”, 1, 02, 02, B0,04,00,00, 00,00,00,00
HKR, Responses, “CONNECT 1200/MNP”, 1, 02, 02, B0,04,00,00, 00,00,00,00
HKR, Responses, “CONNECT 1200/LAP-M”, 1, 02, 02, B0,04,00,00, 00,00,00,00
HKR, Responses, “CONNECT 1200/V42BIS”, 1, 02, 03, B0,04,00,00, 00,00,00,00
HKR, Responses, "CONNECT 1200/V42b

huaping jiang wrote:

Our usb modem driver installation is very slow, the last window
is copy sys file. This window will keep in serveral minutes, but
usb modem device is ok at this time. how to reduce the installation
time?

At device installation time, the Modem class installer will issue ATE0Q0V1 to your device and wait for the “OK” to return. I think it might do another command too (maybe AT+FCLASS=?), but it escapes me at the moment. Both strings are hard-coded into modemui.dll, they’re sent no matter what and you can’t remove them.

Does your device support these commands and respond properly? (either “OK” or “ERROR”) Are you handling all these IRPs correctly at device installation time? If not, the installer will hang…

Hi Chris,
I have capture the log. The first at command is ATZQ0E0V1 and our device return “OK”,
The second command is AT+GCI?, our device return “error”. I think it should be ok.
But the installer is still hang.

why

than you very much for your help.

huaping jiang

huaping jiang wrote:

I have capture the log. The first at command is ATZQ0E0V1 and
our device return “OK”, The second command is AT+GCI?, our
device return “error”. I think it should be ok. But the installer
is still hang.

Oh yeah, AT+GCI?. Anyway, my devices all say ERROR to that command too, but I don’t have this problem, so that can’t be it (i.e. you must respond “OK”).

If the installer is hanging, my best guess is that you are either losing IRPs somewhere (i.e. not supporting cancellation/IRP queueing properly) or you’ve misimplemented the serial spec in some way (either the timeout semantics, or the serial IOCTLs).

It’s hard to give a better guess than that based on the information you’ve given. Do you have a full dump of all the I/O calls into your driver, including your responses?

I received read IRP with length 4096 bytes, after receiving “error”. Then I timeouted this IRP with data “error”. Then clean up is called,then close is called.
Then I haven’t received any IOCTLs.

but the installation was still hanging.