windows - 安装

标签 windows usb driver winusb

我想尝试一下 WinUSB。我已经安装了 WinDDK,我正准备为我的驱动程序创建我的第一个 INF 文件。我正在关注 MSDN guide去做这个。该指南包含一个示例 INF 文件和“将部分名称中的 USB_Install 更改为适当的 DDInstall 值”的说明。

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

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

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

与部分标题中的 [USB_Install] 不同的内容。我找到的关于 DDInstall 的唯一解释只是关于如何处理此部分的一般解释 (Also on MSDN)。

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

最佳答案

我尝试遵循相同的 MSDN 指南,但遇到了一些问题。我最终使用了 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

关于windows - 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13134934/

相关文章:

windows - 我怎样才能使批处理文件像使用 Perl 的简单 grep 一样运行?

python - Windows XP 中的 django startproject 异常

c# - 在 Windows 资源管理器中将文件从(例如)iPhone 拖放到 WPF 应用程序中

linux - 自己的RS232设备作为linux文件系统设备

java - 如何在windows下用java运行linux程序?

c# - DatagridView 复选框已选中?

blackberry - 直接从usb接口(interface)从黑莓(珍珠)获取gps数据

swift - Swift 上的 USB 连接委托(delegate)

windows - 打开 WDK 项目导致 "One or more errors occurred"消息

php - 安装失败-El Capitan上PHP的mongodb驱动