首页 文章

WinUSB安装

提问于
浏览
2

我想用WinUSB做一些实验 . 我've installed the WinDDK and I'我即将为我的驱动程序创建我的第一个INF文件 . 我正在按照MSDN guide这样做 . 该指南包含示例INF文件和"changing USB_Install in section names to an appropriate DDInstall value"的说明 .

很公平,唯一的问题是我不知道'适当的DDInstall值'是什么 .

我不是INF文件的专家,我只能猜测指南可能要我更改示例文件中的部分名称

[USB_Install]
Include = winusb.inf
Needs   = WINUSB.NT

在节 Headers 中与 [USB_Install] 不同的内容 . 我发现的关于DDInstall的唯一解释只是对如何处理此部分(Also on MSDN)的一般性解释 .

我的问题是,我应该将什么放入我的INF文件而不是 [USB_Install] 字符串?

1 回答

  • 5

    我've tried to follow the same MSDN guide and ran into a few issues. I ended up using Microchip'的WinUSB驱动模板 . 此模板可在Microchip Application Libraries中找到 .

    它与MSDN给出的示例略有不同,但它适用于我的系统 . 它也适用于最新的WDK(8.0版)附带的工具和DLL文件 .

    虽然这不能解决您的问题,但我认为与MSDN提供的模板相比,它是一个更好的模板 .

    以下是Microchip提供的inf文件:

    ;This .inf file is a modified version of the example INF provided
    ;in the Microsoft document:
    ;"How to Use WinUSB to Communicate with a USB Device"
    
    
    [Version]
    Signature = "$Windows NT$"
    Class = CustomUSBDevices
    ClassGuid= {a503e2d3-a031-49dc-b684-c99085dbfe92}
    Provider = %MFGNAME%
    DriverVer=07/20/2012,1.0.0.4
    CatalogFile=winusb.cat    ;CAT file needed for a signed driver pacakage
    ;------------------------------------------------------------------------------
    ; ========== Manufacturer/Models sections ===========
    ;------------------------------------------------------------------------------
    [Manufacturer]
    %MFGNAME% = MyDevice_WinUSB,NTx86,NTamd64
    
    ;------------------------------------------------------------------------------
    ;  Vendor and Product ID Definitions
    ;------------------------------------------------------------------------------
    ; When developing your custom USB device, the VID and PID used in the PC side
    ; application program and the firmware on the microcontroller must match.
    ; Modify the below lines to use your VID and PID.  Use the format as shown below.
    ; Note: One INF file can be used for multiple devices with different VID and PIDs.
    ; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line.
    ; There is a maximum number of devices that can be supported per line however.
    ; If you append a large number of VID/PIDs to the end of the line, and get a:
    ; "The data area passed to a system call is too small." error when trying to install
    ; the INF, try removing some of the VIDs/PIDs.
    ;------------------------------------------------------------------------------
    [MyDevice_WinUSB.NTx86]
    %DESCRIPTION% =USB_Install, USB\VID_04d8&PID_0204
    
    [MyDevice_WinUSB.NTamd64]
    %DESCRIPTION% =USB_Install, USB\VID_04d8&PID_0204
    
    
    ;=========================================================================================
    ;ClassInstall32 and ClassInstall_AddReg sections used to make new device manager category.
    ;=========================================================================================
    [ClassInstall32]
    AddReg=ClassInstall_AddReg
    
    [ClassInstall_AddReg]
    HKR,,,,%DEVICEMANAGERCATEGORY%
    HKR,,Icon,,"-20"
    
    
    ; =================== Installation ===================
    
    [USB_Install]
    Include=winusb.inf
    Needs=WINUSB.NT
    
    [USB_Install.Services]
    Include=winusb.inf
    AddService=WinUSB,0x00000002,WinUSB_ServiceInstall
    
    [WinUSB_ServiceInstall]
    DisplayName     = %WinUSB_SvcDesc%
    ServiceType     = 1
    StartType       = 3
    ErrorControl    = 1
    ServiceBinary   = %12%\WinUSB.sys
    
    [USB_Install.Wdf]
    KmdfService=WINUSB, WinUsb_Install
    
    [WinUSB_Install]
    KmdfLibraryVersion=1.11
    
    [USB_Install.HW]
    AddReg=Dev_AddReg
    
    [Dev_AddReg]
    HKR,,DeviceInterfaceGUIDs,0x10000,"{58D07210-27C1-11DD-BD0B-0800200C9a66}"
    ;When editing the GUID (the big hex number with dashes inside the squiggly 
    ;braces), make sure to write the intended PC application to use the same GUID.
    ;Otherwise the application won't be able to find the USB device properly.
    
    [USB_Install.CoInstallers]
    AddReg=CoInstallers_AddReg
    CopyFiles=CoInstallers_CopyFiles
    
    [CoInstallers_AddReg]
    HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01011.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"
    
    [CoInstallers_CopyFiles]
    WinUSBCoInstaller2.dll
    WdfCoInstaller01011.dll
    
    [DestinationDirs]
    CoInstallers_CopyFiles=11
    
    ; ================= Source Media Section =====================
    
    [SourceDisksNames]
    1 = %DISK_NAME%,,,\i386
    2 = %DISK_NAME%,,,\amd64
    
    [SourceDisksFiles.x86]
    WinUSBCoInstaller2.dll=1
    WdfCoInstaller01011.dll=1
    
    [SourceDisksFiles.amd64]
    WinUSBCoInstaller2.dll=2
    WdfCoInstaller01011.dll=2
    
    ; =================== Strings ===================
    
    [Strings]
    MFGNAME="Your Manufacturer Name" ; ManufacturerName
    DESCRIPTION="Your USB Device Name" ; DeviceName
    WinUSB_SvcDesc="WinUSB Device"
    DISK_NAME="WinUSB Device Install Disk" ; DiskName
    DEVICEMANAGERCATEGORY="Custom USB Devices" ; ClassName
    

相关问题