This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Code10 after installing own driver on x64 win 7 prof

Hello everyone,

I tried to install an driver via INF-file for USB-CDC (based on mcb2300_vcom.inf) on Windows 7 Professional x64 (in the following text called 'target system'). This is to get a COM-Port to send data via USB to an LPC2368 microcontroller.

The installation failed the first time with the message that the driver is not a x64-based system driver.

So I changed the driver as described in MSDN-article for "Cross-Platform INF Files". After a day of hard mind-work I finished the driver and tried to install it again. Now the installation starts on the target system, gives a message about the missing signature, and finishes with following message:

Driver software was found, but an error occured while installation.
The device could not be started. (Code 10)

I checked the INF-file with ChkInf (WDK 7.1.0) on the target system and got only one error (no warnings):

Line x: ERROR: (E22.1.1081) Directive: CatalogFile required (and must not be blank) in section [Version] for WHQL digital signature.

I do not think this error is the reason for Code10.

I furthermore checked the usbser.sys on the target system. It's version is 6.1.7600.16385.
It's date is 14.07.2009 02:06.

I do not know what to do now to make the driver work.

Finally, here is my revised INF source:

[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MYCOMPANY%
DriverVer=10/13/2010,5

[DestinationDirs]
FakeModemCopyFileSection=12
DefaultDestDir=12

[Manufacturer]
%MYCOMPANY%=USBDevice,NTia64,NTamd64

;------------------------------------------------------------------------------
; Models sections
;------------------------------------------------------------------------------

[USBDevice]
%DRIVERNAME%=InstallXXUSB, USB\VID_c251&PID_1705

[USBDevice.NTia64]
%DRIVERNAME%=InstallXXUSB, USB\VID_c251&PID_1705

[USBDevice.NTamd64]
%DRIVERNAME%=InstallXXUSB, USB\VID_c251&PID_1705

[SourceDisksFiles]

[SourceDisksNames]

;------------------------------------------------------------------------------
; Installation
;------------------------------------------------------------------------------

[InstallXXUSB]
include=mdmcpq.inf
CopyFiles=FakeModemCopyFileSection
AddReg=XXUSB.AddReg

[XXUSB.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[InstallXXUSB.Services]
AddService=usbser, 0x00000002, DriverService

[DriverService]
DisplayName=%DRIVERNAME%
Description=%DESCRIPTION%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys


;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------

[Strings]
MYCOMPANY="The name of my company"
DRIVERNAME="XX USB VCom Port"
DESCRIPTION="Provides a virtual COM-Port when connecting an XX via USB"

Has anyone hints for me to solve the problem and make the port work?

Best regards

Parents
  • Hello,

    I have actually logged the data exchanged between a Windows XP x86 computer and the faulty
    device after plugging the device to a PCI-to-USB Open Host Controller card of the computer. I
    used USBlyzer software to log the data exchange. Here is an excerpt of the results:

    USBlyzer Report
    
    Capture List
    
    Type    Seq             Time            Request                         Request Details                 Raw Data                        I/O     C:I:E           Device Object   Device Name     Driver Name     IRP             Status
    START   0001            11:57:41.000
    ...
    PnP     0020            11:57:55.125    Start Device                                                                                                            858294A8h       USBSER000       usbser          85493A50h
    PnP     0021            11:57:55.125    Start Device                                                                                                            85708938h       USBPDO-6        usbhub          85493A50h
    PnP     0022-0021       11:57:55.125    Start Device                                                                                                            85708938h       USBPDO-6        usbhub          85493A50h       Success
    URB     0023            11:57:55.125    Get Descriptor from Device      Dvc                                                             in                      85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0024-0023       11:57:55.125    Control Transfer                Get Descriptor (Dvc)            12 01 00 02 02 00 00 40...      in      --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0025            11:57:55.125    Get Descriptor from Device      Cfg ind:0                                                       in                      85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0026-0025       11:57:55.125    Control Transfer                Get Descriptor (Cfg ind:0)      09 02 43 00 02 01 00 40...      in      --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0027            11:57:55.125    Select Configuration            1                                                                                       85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0028-0027       11:57:55.187    Select Configuration            1                                                                                       85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0029            11:57:55.187    Class Interface                 Get Line Coding (Ifc:0)                                         in                      85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0030-0029       11:57:55.187    Control Transfer                Get Line Coding (Ifc:0)         80 25 00 00 00 00 08            in      --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0031            11:57:55.187    Class Interface                 Set Control Line State (Ifc:0)                                  out                     85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0032-0031       11:57:55.187    Control Transfer                Set Control Line State (Ifc:0)                                  out     --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0033            11:57:55.187    Bulk or Interrupt Transfer      4096 bytes buffer                                               in      01:01:82        85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0034            11:57:55.187    Bulk or Interrupt Transfer      10 bytes buffer                                                 in      01:00:81        85708938h       USBPDO-6        usbhub          86B48730h
    PnP     0035-0020       11:57:55.187    Start Device                                                                                                            858294A8h       USBSER000       usbser          85493A50h       Success
    PnP     0036            11:57:55.187    Query Capabilities                                                                                                      858294A8h       USBSER000       usbser          85493A50h
    

    The missing GET_LINE_CODING and SET_CONTROL_LINE_STATE requests are visible here. I brought to
    light that the USB2.0 controller of my computer is not working correct. This may be the reason
    why USBee DX could not log all the requests. Now I have three problems with going on to search
    for the problem:

    First one: The formerly missing requests are existent. They where missing while connecting the
    device to a Windows2000 x86 computer and while connecting the device to a Windows 7 x64
    computer. Because of the requests beeing missed in all the USBee DX log files, I suggest that
    they would have been missed while connecting the device to a Windows XP x86 computer too.
    Now, after I have identified the problem with the USB2.0 controller and used the USBlyzer
    software to log the data exchange, the requests magically appeared. Therefore I suggest, that
    the requests existed all the time.
    So, what problem do I search for now?

    Second one: I am not able to log the data exchange between the faulty device and a Windows 7
    x64 computer with USBlyzer, because the software is provided for x86-based operating systems
    only.
    Does anyone have an idea about a suitable USB analyzer software that runs on x64-based
    operating systems including Windows 7?

    Third one: I can not use USBee DX any longer, because USBee DX hardware requires to be
    connected to a different computer than the target system and USBee DX Data Extractor requires
    to run on a different computer than the target system. But there is no other computer with
    USB2.0 controller available to me.

    To be continued....

    Best regards

Reply
  • Hello,

    I have actually logged the data exchanged between a Windows XP x86 computer and the faulty
    device after plugging the device to a PCI-to-USB Open Host Controller card of the computer. I
    used USBlyzer software to log the data exchange. Here is an excerpt of the results:

    USBlyzer Report
    
    Capture List
    
    Type    Seq             Time            Request                         Request Details                 Raw Data                        I/O     C:I:E           Device Object   Device Name     Driver Name     IRP             Status
    START   0001            11:57:41.000
    ...
    PnP     0020            11:57:55.125    Start Device                                                                                                            858294A8h       USBSER000       usbser          85493A50h
    PnP     0021            11:57:55.125    Start Device                                                                                                            85708938h       USBPDO-6        usbhub          85493A50h
    PnP     0022-0021       11:57:55.125    Start Device                                                                                                            85708938h       USBPDO-6        usbhub          85493A50h       Success
    URB     0023            11:57:55.125    Get Descriptor from Device      Dvc                                                             in                      85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0024-0023       11:57:55.125    Control Transfer                Get Descriptor (Dvc)            12 01 00 02 02 00 00 40...      in      --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0025            11:57:55.125    Get Descriptor from Device      Cfg ind:0                                                       in                      85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0026-0025       11:57:55.125    Control Transfer                Get Descriptor (Cfg ind:0)      09 02 43 00 02 01 00 40...      in      --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0027            11:57:55.125    Select Configuration            1                                                                                       85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0028-0027       11:57:55.187    Select Configuration            1                                                                                       85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0029            11:57:55.187    Class Interface                 Get Line Coding (Ifc:0)                                         in                      85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0030-0029       11:57:55.187    Control Transfer                Get Line Coding (Ifc:0)         80 25 00 00 00 00 08            in      --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0031            11:57:55.187    Class Interface                 Set Control Line State (Ifc:0)                                  out                     85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0032-0031       11:57:55.187    Control Transfer                Set Control Line State (Ifc:0)                                  out     --:--:00        85708938h       USBPDO-6        usbhub          853F7E48h       Success (Success)
    URB     0033            11:57:55.187    Bulk or Interrupt Transfer      4096 bytes buffer                                               in      01:01:82        85708938h       USBPDO-6        usbhub          853F7E48h
    URB     0034            11:57:55.187    Bulk or Interrupt Transfer      10 bytes buffer                                                 in      01:00:81        85708938h       USBPDO-6        usbhub          86B48730h
    PnP     0035-0020       11:57:55.187    Start Device                                                                                                            858294A8h       USBSER000       usbser          85493A50h       Success
    PnP     0036            11:57:55.187    Query Capabilities                                                                                                      858294A8h       USBSER000       usbser          85493A50h
    

    The missing GET_LINE_CODING and SET_CONTROL_LINE_STATE requests are visible here. I brought to
    light that the USB2.0 controller of my computer is not working correct. This may be the reason
    why USBee DX could not log all the requests. Now I have three problems with going on to search
    for the problem:

    First one: The formerly missing requests are existent. They where missing while connecting the
    device to a Windows2000 x86 computer and while connecting the device to a Windows 7 x64
    computer. Because of the requests beeing missed in all the USBee DX log files, I suggest that
    they would have been missed while connecting the device to a Windows XP x86 computer too.
    Now, after I have identified the problem with the USB2.0 controller and used the USBlyzer
    software to log the data exchange, the requests magically appeared. Therefore I suggest, that
    the requests existed all the time.
    So, what problem do I search for now?

    Second one: I am not able to log the data exchange between the faulty device and a Windows 7
    x64 computer with USBlyzer, because the software is provided for x86-based operating systems
    only.
    Does anyone have an idea about a suitable USB analyzer software that runs on x64-based
    operating systems including Windows 7?

    Third one: I can not use USBee DX any longer, because USBee DX hardware requires to be
    connected to a different computer than the target system and USBee DX Data Extractor requires
    to run on a different computer than the target system. But there is no other computer with
    USB2.0 controller available to me.

    To be continued....

    Best regards

Children
  • I wrote:
    Does anyone have an idea about a suitable USB analyzer software that runs on x64-based
    operating systems including Windows 7?

    I will now try to use SourceUSB...

  • Before I will start in the weekend, here is the latest update:

    I successful logged the data exhange between our device and a Windows 7 x64 running laptop computer. I used SourceUSB 3.2.0 to log the data.
    In the log on row 22 to 26 I can see six times INVALID_PARAMETER on Irp Status column... What does that mean?

    Best regards and many thanks for all useful answers

    See you next week

  • Good morning to everyone,

    I have analyzed the requests captured by SourceUSB now. I found out that the host sends a
    SELECT_CONFIGURATION request and then the INVALID_PARAMETER status occurs on the request
    completion. After that, a previous started START_DEVICE request also shows
    INVALID_PARAMETER status on request completion, followed by some successful REMOVE_DEVICE PNP
    requests at the end of the captured data.

    Now I have to find out, why the SELECT_CONFIGURATION ends with INVALID_PARAMETER...

    Here is an excerpt of the captured requests:

    TYPE                            #       Request                         I/O     TIME            DO                              Cfg:Ifc:Epa     ISO Err/ZLP     CBW     CSW     Irp Request             Irp Status
    =========================================================================================================================================================================================================================
    ...
    URB  (blue field)               20      SELECT_CONFIGURATION            --      12.23830986     noname(0xfffffa8003f6e820)      ---             ---             ---     ---     0xfffffa8003f02500      ---
    URB  (blue field)               21      SELECT_CONFIGURATION            --      12.23831272     'USBPDO-7'                      ---             ---             ---     ---     0xfffffa8003f02500      ---
    URB  (light blue field)         22      SELECT_CONFIGURATION            --      12.29962444     'USBPDO-7'                      ---             ---             ---     ---     0xfffffa8003f02500      INVALID_PARAMETER
    URB  (light blue field)         23      SELECT_CONFIGURATION            --      12.29962540     noname(0xfffffa8003f6e820)      ---             ---             ---     ---     0xfffffa8003f02500      INVALID_PARAMETER
    URB* (light blue field)         24      SELECT_CONFIGURATION            --      12.29963017     'USBPDO-7'                      ---             ---             ---     ---     0xfffffa8003f02500      INVALID_PARAMETER
    URB* (light blue field)         25      SELECT_CONFIGURATION            --      12.29963112     noname(0xfffffa8003f6e820)      ---             ---             ---     ---     0xfffffa8003f02500      INVALID_PARAMETER
    PNP  (light green field)        26      START_DEVICE                    --      12.29964542     'USBSER000'                     ---             ---             ---     ---     0xfffffa80040596b0      INVALID_PARAMETER
    PNP* (light green field)        27      START_DEVICE                    --      12.29968071     'USBSER000'                     ---             ---             ---     ---     0xfffffa80040596b0      INVALID_PARAMETER
    ...
    

    Does anyone have an idea for the reasons why the INVALID_PARAMETER status occurs?

    Best regards