none
Installing USB modem drivers from installer RRS feed

  • Question

  • I have application that needs to deploy drivers for a USB modem during installation. For what it's worth, I'm using Advanced Installer.  The modem manufacturer provides an executable file for x86 and x64 that performs the actual driver install. Along with my application, I install the driver files in the following (simplified) directory structure:

    \myapp.exe
    \modem drivers
    \modem drivers\32bit
    \modem drivers\32bit\InstallDrv32.exe
    \modem drivers\32bit\driver.cat
    \modem drivers\32bit\driver.inf
    \modem drivers\32bit\i386\driver.sys
    \modem drivers\64bit
    \modem drivers\64bit\InstallDrv64.exe
    \modem drivers\64bit\driver.cat
    \modem drivers\64bit\driver.inf
    \modem drivers\64bit\amd64\driver.sys

    If I manually run the appropriate driver installer .exe after my installer has finished, it works perfectly. Unfortunately when I call the same .exe at the end of my installer, the driver installer gives me an "INF copy error" message.  In looking through the setupapi.dll.log in \Windows\inf, I see the following:

    >>> [SetupCopyOEMInf - C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf]
    >>> Section start 2012/10/16 16:09:07.471
    cmd: "C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\InstallDrv64.exe"
    sto: {Import Driver Package: C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf} 16:09:07.533
    sto: Importing driver package into Driver Store:
    sto: Driver Store = C:\Windows\System32\DriverStore (Online | 6.1.7601)
    sto: Driver Package = C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf
    sto: Architecture = amd64
    sto: Locale Name = neutral
    sto: Flags = 0x00000000
    sto: Copying driver package files to 'C:\Users\bmt22033\AppData\Local\Temp\{3abdef05-ae30-7b6e-e2eb-245c4f0af37f}'.
    inf: Opened INF: 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf' ([strings])
    !!! sto: Driver package references a missing external file 'C:\Windows\system32\drivers\u302wh.sys'. Error = 0x00000002
    !!! sto: Failed to retrieve driver package copy files. Error = 0x00000002
    !!! sto: Failed to get list of driver package files. Error = 0x00000002, Filename = C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf
    sto: {Import Driver Package: exit(0x00000002)} 16:09:07.564
    inf: Opened INF: 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf' ([strings])
    ! inf: Add to Driver Store unsuccessful
    ! inf: Error 2: The system cannot find the file specified.
    !!! inf: returning failure to SetupCopyOEMInf

    Seeing the references to missing files makes me wonder if the driver install .exe doesn't have the proper working directory when it gets called from inside my installer.  As I said before, if I run the driver installer manually after the installer completes, it works fine.  Here's a snippet of my setupapi.dll.log file when the driver installer is run manually and works ok:

    >>>  [SetupCopyOEMInf - C:\64bit\u302bus.inf]

    >>>  Section start 2012/10/16 14:24:34.101
          cmd: "C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\InstallDrv64.exe"
         sto: {Import Driver Package: C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf} 14:24:34.132
         sto:      Importing driver package into Driver Store:
         sto:           Driver Store   = C:\Windows\System32\DriverStore (Online | 6.1.7601)
         sto:           Driver Package = C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf
         sto:           Architecture   = amd64
         sto:           Locale Name    = neutral
         sto:           Flags          = 0x00000000
         sto:      Copying driver package files to 'C:\Users\bmt22033\AppData\Local\Temp\{6a503413-f989-79cd-94d6-af280f1e4214}'.
         inf:      Opened INF: 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf' ([strings])
         inf:      Opened INF: 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf' ([strings])
         flq:      {FILE_QUEUE_COPY}
         flq:           CopyStyle      - 0x00000000
         flq:           SourceRootPath - 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\amd64'
         flq:           SourceFilename - 'u302bus.sys'
         flq:           TargetDirectory- 'C:\Users\bmt22033\AppData\Local\Temp\{6a503413-f989-79cd-94d6-af280f1e4214}\amd64'
         flq:           SourceDesc     - 'u302bus.sys'
         flq:           SourceTagfile  - 'u302bus.sys'
         flq:      {FILE_QUEUE_COPY exit(0x00000000)}

    ...

    I've opened a support ticket open with the developer of my installation package to get their feedback but in the meantime, I was wondering if anyone here could help me to understand more about the errors I'm seeing in my setupapi.dll.log file?


    • Edited by bmt22033 Tuesday, October 16, 2012 9:51 PM
    Tuesday, October 16, 2012 9:50 PM

Answers

  • Hi Pavel.  The INF file came with a Zoom 3G USB modem but apparently was either created by or at least based on an INF file from a company called MCCI Corporation.  I contacted them but as expected, they said that they only deal with the OEMs and directed me back to Zoom.  Zoom's tech support people didn't even seem to understand what an INF file is so it seems pretty clear that I won't be getting any help from them.  I'd really hate to do it this was but I suppose as a last ditch alternative, I could install the drivers as part of my application installer and then have my users manually run the modem manufacturer's driver installation .exe after that.  Thanks again for your replys!  I really appreciate you taking the time to try and help me.

    Friday, October 19, 2012 5:55 PM

All replies

  • your on disk layout of the files probably does not match the disk layout described by the INF

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    Wednesday, October 17, 2012 3:21 AM
  • your on disk layout of the files probably does not match the disk layout described by the INF

    d -- This posting is provided "AS IS" with no warranties, and confers no rights.

    But if I let my application installer copy the driver package (.exe, .cat, .inf and .sys files) into my installation directory and then double-click on the driver installer .exe file after my application installer has terminated, then it works fine.  For some reason, there seems to be a difference between the driver installer .exe file being called by my application installer vs. being double-clicked on by me.  The difference between these two scenarios is visible in my setupapi.dll.log file beginning just after this line:

    inf: Opened INF: 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf' ([strings])

    If I started the .exe by double-clicking on it, the next few entries in setupapi.dll.log will contain:

     flq:      {FILE_QUEUE_COPY}

         flq:           CopyStyle      - 0x00000000
         flq:           SourceRootPath - 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\amd64'
         flq:           SourceFilename - 'u302bus.sys'
         flq:           TargetDirectory- 'C:\Users\bmt22033\AppData\Local\Temp\{6a503413-f989-79cd-94d6-af280f1e4214}\amd64'
         flq:           SourceDesc     - 'u302bus.sys'
         flq:           SourceTagfile  - 'u302bus.sys'
         flq:      {FILE_QUEUE_COPY exit(0x00000000)}

    When my application installer calls the driver install .exe, the next few entries in setupapi.dll.log will contain:

    !!! sto: Driver package references a missing external file 'C:\Windows\system32\drivers\u302wh.sys'. Error = 0x00000002
    !!! sto: Failed to retrieve driver package copy files. Error = 0x00000002
    !!! sto: Failed to get list of driver package files. Error = 0x00000002, Filename = C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf
    sto: {Import Driver Package: exit(0x00000002)} 16:09:07.564
    inf: Opened INF: 'C:\Program Files (x86)\MyCompany\MyApp\modem drivers\64bit\u302bus.inf' ([strings])
    ! inf: Add to Driver Store unsuccessful
    ! inf: Error 2: The system cannot find the file specified.
    !!! inf: returning failure to SetupCopyOEMInf

    Unfortunately, the developer of my installation suite hasn't been able to figure it out, either.

    • Edited by bmt22033 Wednesday, October 17, 2012 3:30 PM
    Wednesday, October 17, 2012 3:20 PM
  • So why the .sys file is "external"? Why the installer thinks it is in system32\drivers?

    Check the INF file for invailid or misused dir. IDs in CopyFiles section. Do you use, by chance, some "smart trick" like copying the .sys file directly to system32\drivers and using %12% as source dir?

    -- pa

    Hi Pavel,

    Thank you very much for the reply!  I wish I knew why the installer seems to think that the .sys file is external and located in system32\drivers.  As I said before, when I manually launch the driver installer .exe file, it works fine so I *think* the INF file is ok.  I tried running ChkINF against the .INF file and the only thing it flagged were two empty sections that are "not referenced".  Unfortunately, my understanding of INF files and drivers is pretty limited.  I suppose it's possible that the manufacturer has written something incorrectly in the INF that allows it to work with their driver installer but is breaking when I try calling their .exe from my application installer.  Anyway, here's the INF file that I'm using (provided by the modem manufacturer).  You'll see the two sections that ChkINF marked as "not referenced" but I'm guessing that those wouldn't be the cause of my problem?  Thanks again.

    ;*****************************************************************************
    ;
    ; u302bus.inf   -- Install the HSPADataCard WMC Bus Driver drivers
    ;
    ; Copyright (c) 1997-2010 by MCCI Corporation 
    ;
    ; MCCI is a registered trademark of MCCI Corporation.
    ;
    ; NOTICE: This software is licensed, not sold.  Any modification of this
    ; inf file to change the reference to an operating system or to change the
    ; reference to a device is not permitted unless authorized in writing by
    ; MCCI Corporation.
    ;
    ;*****************************************************************************

    [version]
    signature="$WINDOWS NT$"
    Class=USB
    ClassGuid={36FC9E60-c465-11cf-8056-444553540000}
    Provider=%Provider%
    DriverVer=07/29/2010,5.22.1.1
    CatalogFile=u302bus.cat

    [ControlFlags]
    ExcludeFromSelect = *

    ;-----------------------------------------------------------------------------
    ; Specify target paths...
    ;-----------------------------------------------------------------------------
    [DestinationDirs]
    DefaultDestDir                  = 11                    ; LDID_SYS
    U302Wdm.NT.CopyFiles        = 12                    ; system32\drivers
    PropPages.CopyFiles             = 11                    ; system

    ;-----------------------------------------------------------------------------
    ; Specify the install disks.  A bit unwieldy during development.
    ;-----------------------------------------------------------------------------
    [SourceDisksNames.x86]
    ; diskid = description[, [tagfile] [, <unused>, subdir]]
    1=%DiskString%,"u302bus.sys",,\i386


    [SourceDisksNames.amd64]
    ; diskid = description[, [tagfile] [, <unused>, subdir]]
    1=%DiskString%,"u302bus.sys",,\amd64



    [SourceDisksFiles]
    ; filename = diskid[, [subdir] [, size]]
    u302bus.sys = 1
    u302whnt.sys = 1

    ;-----------------------------------------------------------------------------
    ; Table of Contents:  manufacturer, then devices.
    ;-----------------------------------------------------------------------------
    [Manufacturer]
    %U302%=U302, NTamd64

    ;-----------------------------------------------------------------------------
    ; The devices
    ;-----------------------------------------------------------------------------
    [U302]
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0001
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0002
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0003
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0004
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0005
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0006
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0007
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0008
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0009
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0010
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0011
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0012
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0013
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0014
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0015
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0016
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0017
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0018
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0019
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0020
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0021
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0022
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0023
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0024
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0025
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0026
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0027
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0028
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0029
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0030
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0031
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0032
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0033
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0034
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0035
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0036
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0037
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0038
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0039
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0040
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0041
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0042
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0043
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0044
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0045
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0046
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0047
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0048
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0049
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0050
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0051
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0052
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0053
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0054
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0055
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0056
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0057
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0058
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0059
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0060
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0061
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0062
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0063
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0064
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0065
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0066
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0067
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0068
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0069
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006f

    [U302.NTamd64]
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0001
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0002
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0003
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0004
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0005
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0006
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0007
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0008
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0009
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_000f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0010
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0011
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0012
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0013
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0014
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0015
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0016
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0017
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0018
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0019
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_001f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0020
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0021
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0022
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0023
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0024
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0025
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0026
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0027
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0028
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0029
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_002f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0030
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0031
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0032
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0033
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0034
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0035
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0036
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0037
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0038
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0039
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_003f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0040
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0041
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0042
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0043
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0044
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0045
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0046
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0047
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0048
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0049
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_004f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0050
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0051
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0052
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0053
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0054
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0055
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0056
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0057
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0058
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0059
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_005f
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0060
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0061
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0062
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0063
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0064
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0065
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0066
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0067
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0068
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_0069
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006a
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006b
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006c
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006d
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006e
    %U302.CdcBus.Desc% = U302Wdm.Install, USB\VID_230D&PID_006f

    ;-----------------------------------------------------------------------------
    ; How to install them:  
    ; On NT, the system first tries [section.NT], then [section].
    ;-----------------------------------------------------------------------------

    ;-----------------------------------------------------------------------------
    ; Diagnostics Files CopyFiles List Section
    ;-----------------------------------------------------------------------------
    [U302.CopyFiles]
    ; (W22.1.2083) Section [U302.COPYFILES] not referenced 

    ;-----------------------------------------------------------------------------
    ; XXX when we have a property page DLL, add it to the following section.
    ;-----------------------------------------------------------------------------
    [PropPages.CopyFiles]
    ; (W22.1.2083) Section [PROPPAGES.COPYFILES] not referenced 


    ;-----------------------------------------------------------------------------
    ;       How to install the WDM driver on NT
    ;-----------------------------------------------------------------------------
    [U302Wdm.Install.NT]
    CopyFiles       = U302Wdm.NT.CopyFiles
    AddReg          = U302Wdm.AddReg, U302Wdm.NT.AddReg

    ;-----------------------------------------------------------------------------
    ;       How to start the WDM driver on NT
    ;-----------------------------------------------------------------------------



    [U302Wdm.Install.NT.Services]
    AddService      = u302bus, 2, U302Wdm.AddService, U302Wdm.Install.EventLog

    [U302Wdm.AddService]
    DisplayName             = %U302.Service.Desc%
    ServiceType             = 1     ; SERVICE_KERNEL_DRIVER
    StartType               = 3     ; SERVICE_DEMAND_START
    ErrorControl            = 1     ; SERVICE_ERROR_NORMAL
    ServiceBinary           = %12%\u302bus.sys
    LoadOrderGroup          = Base

    ;-----------------------------------------------------------------------------
    ;       Setup event logging, if driver supports it
    ;-----------------------------------------------------------------------------

    [U302Wdm.Install.EventLog]
    Addreg = U302Wdm.EventLog.AddReg

    [U302Wdm.EventLog.AddReg]
    HKR,,EventMessageFile, 0x20000, "%%SystemRoot%%\System32\drivers\u302bus.sys"
    HKR,,TypesSupported, 0x10001, 7


    ;-----------------------------------------------------------------------------
    ;       WDM registry entries (all platforms)
    ;-----------------------------------------------------------------------------
    [U302Wdm.AddReg]
    HKR,,Configuration,0x10001, 03,00,00,00
    HKLM,"SYSTEM\CurrentControlSet\Control\DeviceOverrides\USB#VID_230D&PID_0001\LocationPaths\*", Removable, 0x10001, 0
    HKLM,"SYSTEM\CurrentControlSet\Control\DeviceOverrides\USB#VID_230D&PID_0001\ChildLocationPaths\*", Removable, 0x10001, 0

    HKR,,MCCI_TCPWindowSizeFix_MinValue,0x10001,f0,fa,00,00
    HKR,,MCCI_MCECIDFix,0x10001,07,00,00,00


    ;-----------------------------------------------------------------------------
    ;       WDM registry entries (NT only)
    ;-----------------------------------------------------------------------------
    [U302Wdm.NT.AddReg]
    HKR,,MCCIUSB_DebugLevel, 0x10001, ff,ff,ff,ff
    HKR,,EnableCR3840, 0x10001, 01,00,00,00 ;fast resume 1=enabled, 0=disabled
    HKR,,EnableSelectiveSuspend, 0x10001, 01,00,00,00 ;selective suspend 1=enabled, 0=disabled
    HKR,,AllowRemoteWakeup, 0x10001, 01,00,00,00


    ;-----------------------------------------------------------------------------
    ;       The WDM copy list for NT -- different because things go in
    ;       different places.
    ;-----------------------------------------------------------------------------
    [U302Wdm.NT.CopyFiles]
    u302bus.sys
    u302wh.sys,u302whnt.sys
    u302whnt.sys

    ;-----------------------------------------------------------------------------


    ;****************************************************************************
    ; Localizable Strings
    ;****************************************************************************
    [strings]

    ;BEGIN ENG - US English Strings
    Provider = "HSPADataCard"
    U302 = "HSPADataCard"
    DiskString = "HSPADataCard WMC Bus Driver Installation disk"

    U302.CdcBus.Desc = "HSPADataCard WMC Bus Driver"
    U302.Service.Desc = "HSPADataCard WMC Bus Driver (WDM)"

    CustomerDataPath = "HSPADataCard"
    DriverSet = "HSPADataCard software"
    UninstallFile = "U302Uninstall.exe"
    McciOptions = "Uninstallable"


    ;END ENG - US English Strings

    ;-----------------------------------------------------------------------------
    ; Following are symbolic constants which don't change per locale.
    ;-----------------------------------------------------------------------------

    ;*** end of file ***


    • Edited by bmt22033 Wednesday, October 17, 2012 10:27 PM
    Wednesday, October 17, 2012 10:18 PM
  • Hi Pavel.  The INF file came with a Zoom 3G USB modem but apparently was either created by or at least based on an INF file from a company called MCCI Corporation.  I contacted them but as expected, they said that they only deal with the OEMs and directed me back to Zoom.  Zoom's tech support people didn't even seem to understand what an INF file is so it seems pretty clear that I won't be getting any help from them.  I'd really hate to do it this was but I suppose as a last ditch alternative, I could install the drivers as part of my application installer and then have my users manually run the modem manufacturer's driver installation .exe after that.  Thanks again for your replys!  I really appreciate you taking the time to try and help me.

    Friday, October 19, 2012 5:55 PM