wdk8.1+vs2013中使用winusb模版开发usb设备驱动 1C

新人一只,本身是做硬件的,现在要编写硬件(USB设备)的驱动,然后想使用winusb进行快速的驱动开发。在使用winusb之前,使用了libusb-win32下的inf工具进行inf文件的生成和安装,通过bus hound可以看到枚举,并进行的bulk in/out测试(自带的send command)。目标pc是64位的win7旗舰版。
现在状况是vs2013新建了winusb模版工程,其中drivers package中的inf文件,对其修改了VID,PID,然后进行编译生成。这时候插入usb设备(已经卸载并删除了libusb生成的驱动),更新驱动程序->选择本地的驱动文件,指向了工程的生成。但是结果是安装不成功,提示是在inf中找不到所需的段落,如图。
图片说明

inf文件内容如下

 ;
; ksp_daq_v11_drivers.inf
;
; Installs WinUsb
;

[Version]
Signature = "$Windows NT$"
Class     = USBDevice
ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider = %ManufacturerName%
CatalogFile=ksp_daq_v11_drivers.cat

; ========== Manufacturer/Models sections ===========

[Manufacturer]
%ManufacturerName% = Standard,NT$ARCH$

[Standard.NT$ARCH$]
%DeviceName% =USB_Install, USB\VID_0308&PID_0110

; ========== Class definition ===========

[ClassInstall32]
AddReg = ClassInstall_AddReg

[ClassInstall_AddReg]
HKR,,,,%ClassName%
HKR,,NoInstallClass,,1
HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-20"
HKR,,LowerLogoVersion,,5.2

; =================== 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.HW]
AddReg=Dev_AddReg

[Dev_AddReg]
; By default, USBDevice class uses iProduct descriptor to name the device in
; Device Manager on Windows 8 and higher.
; Uncomment for this device to use %DeviceName% on Windows 8 and higher:
;HKR,,FriendlyName,,%DeviceName%
HKR,,DeviceInterfaceGUIDs,0x10000,"{fc47c010-ea60-4bed-9e8f-820bee86e7eb}"

[USB_Install.CoInstallers]
AddReg=CoInstallers_AddReg
CopyFiles=CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"

[CoInstallers_CopyFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

; ================= Source Media Section =====================

[SourceDisksNames]
1 = %DiskName%

[SourceDisksFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1

; =================== Strings ===================

[Strings]
ManufacturerName="ksp"
ClassName="Universal Serial Bus devices"
DiskName="ksp_daq_v11_drivers Installation Disk"
WinUsb_SvcDesc="WinUSB Driver"
DeviceName="ksp_daq_v11_drivers Device"
REG_MULTI_SZ = 0x00010000


解决方案配置如下
图片说明

我查找了windows的log文件setupact.log(位于C:\Windows下)

 WdfCoInstaller: [03/15/2016 20:12.05.288] DIF_INSTALLDEVICE: Pre-Processing

WdfCoInstaller: [03/15/2016 20:12.05.706] error locating section [USB_Install.Wdf] in inf C:\Windows\INF\oem107.inf - status(E0000101) <no error text>

WdfCoInstaller: [03/15/2016 20:12.05.849] DIF_INSTALLDEVICE: Pre-Processing

WdfCoInstaller: [03/15/2016 20:12.05.937] GetDriverDetailsData: SetupDiGetSelectedDriver: status(E0000203) <no error text>

WdfCoInstaller: [03/15/2016 20:12.05.993] DIF_INSTALLDEVICE: No action taken for NULL driver

在出现了这个问题之后,我对比了ST-Link v2(ST公司的硬件仿真器)的inf文件(因为stlink貌似也是基于winusb开发的驱动),模版自动生成的inf文件之间的区别在于。模版的inf文件某几节中少了WinUSBCoInstaller2.dll这个文件,我向模版inf文件中添加了这些部分,但是编译不通过。报错信息如下

 22.9.1: winusbcoinstaller2.dll in [coinstallers_copyfiles] of \ksp_daq_v11_drivers.inf is missing or cannot be decompressed from source media.  Please verify all path values specified in SourceDisksNames, SouceDisksFiles, and CopyFiles sections resolve to the actual location of the file, and are expressed in terms relative to the location of the inf.

状况描述如上,求各位给点idea

0

2个回答

问题已经解决。使用了zadig提供的工具生成了inf文件,再对其修改后,使用wdk的inf2cat工具生成数字目录。安装成功。
具体inf内容为:

 ; Ksp_DAQ_v1.1.inf
; Copyright (c) 2010-2016 Pete Batard <pete@akeo.ie> (GNU LGPL)
[Strings]
DeviceName = "Ksp DAQ v1.1"
VendorName = "Ksp"
SourceName = "Ksp DAQ v1.1 Install Disk"
DeviceID   = "VID_0308&PID_0110"
DeviceGUID = "{4AAD13DD-7D64-41AD-A015-01D19A4B7D3F}"

[Version]
Signature   = "$Windows NT$"
Class       = "USBDevice"
ClassGuid   = {88bae032-5a81-49f0-bc3d-a4ff138216d6}
Provider    = %VendorName%
CatalogFile = Ksp_DAQ_v1.1.cat
DriverVer   = 03/31/2015, 6.1.7600.16385

[ClassInstall32]
Addreg = WinUSBDeviceClassReg

[WinUSBDeviceClassReg]
HKR,,,0,"Universal Serial Bus devices"
HKR,,Icon,,-20

[Manufacturer]
%VendorName% = libusbDevice_WinUSB,NTx86,NTamd64,NTarm

[libusbDevice_WinUSB.NTx86]
%DeviceName% = USB_Install, USB\%DeviceID%

[libusbDevice_WinUSB.NTamd64]
%DeviceName% = USB_Install, USB\%DeviceID%

[libusbDevice_WinUSB.NTarm]
%DeviceName% = USB_Install, USB\%DeviceID%

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

[USB_Install.Services]
Include    = winusb.inf
AddService = WinUSB,0x00000002,WinUSB_ServiceInstall

[WinUSB_ServiceInstall]
DisplayName   = "WinUSB - Kernel Driver 03/31/2015 6.1.7600.16385"
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 = AddDeviceInterfaceGUID

[NoDeviceInterfaceGUID]
; Avoids adding a DeviceInterfaceGUID for generic driver

[AddDeviceInterfaceGUID]
HKR,,DeviceInterfaceGUIDs,0x10000,%DeviceGUID%

[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

[SourceDisksNames]
1 = %SourceName%

[SourceDisksFiles.x86]
WinUSBCoInstaller2.dll = 1,x86
WdfCoInstaller01011.dll = 1,x86

[SourceDisksFiles.amd64]
WinUSBCoInstaller2.dll = 1,amd64
WdfCoInstaller01011.dll = 1,amd64

[SourceDisksFiles.arm]
WinUSBCoInstaller2.dll = 1,arm
WdfCoInstaller01011.dll = 1,arm

1

嗯。我也在用vs2013 + wdk搞usb的驱动,你那里有没有编译驱动的流程?就是vs2013新建一个工程然后,怎么样编写usb的驱动的流程

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
WDK8.1 + VS2013 如何配置 USB通信
rn用WDK8.1 + VS2013 编写MFC界面,通过免驱USB与ARM板通信,出现错误如下: rnrnrnfatal error C1083: 无法打开包括文件: “winapifamily.h”: No such file or directoryrnrnrn哪位大神知道WDK8.1 的VS2013如何配置吗,非常感谢!
XPSDrvSmpl (VS2013 + WDK8.1)
Windows 7/8/10 XPS 打印机、在VS2013 + WDK8.1 环境中编译通过。
VS2013和WDk8.1开发windows驱动的问题
[size=18px]最近在学习开发windows驱动,打算使用比较新的VS2013和WDK8.1进行开发,而没有选择旧的开发方法。现在从最基本的HelloWorld驱动程序开始学起,但是在加载驱动程序的时候遇到了一些问题。在查到的资料中,很多都是选择DriverStudio中的Monitor进行加载驱动,但是我的是win7 64的系统,无法安装DriverStudio,有没有其他的驱动程序加载的方法呢?恳求各位大神赐教[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/7.gif][/img][/size]
USB设备驱动研究与开发
USB设备驱动研究与开发,这是一篇论文,主要讲USB驱动以及开发的
基于EFI的USB设备驱动的开发
基于EFI的USB设备驱动的开发 可扩展固件接口(EFI)是英特尔提出的下一代BIOS的全新架构,将会逐步取代现有的BIOS。EFI提供了对USB设备的支持,用户无需进入操作系统,就可以使用USB设备。以USB设备驱动程序开发为例,描述了EFI下设备驱动程序开发的一般过程和方法。包括EFI下驱动模式的分析,USB协议架构和传送方式的解析,以及如何开发EFI下的USB设备驱动程序。
USB之(六)USB设备驱动
To be updated
Ubuntu查看usb设备驱动/usb以太网卡设备驱动
step1:lsusb 查看当前有哪些usb设备。注意:插在usb口上的外接设备一定能通过lsusb显示出来,但是不一定能通过lspci显示出来,即使这个设备的驱动已经安装了。  由于我要查看我的有线网卡的驱动,lsusb命令执行完成以后可知Bus 001 Device 010: ID 0bda:8152 Realtek Semiconductor Corp. 为该有线网卡对应的设备信息。(一点建...
USB设备驱动
USB设备
基于winusb的上位机与USB的通信
本代码是用vs 2010 (c++)编写的USB通信的上位机,简单实现了上位机和USB设备的连接,可供初学者参考
STM32F1XX使用WinUSB
搞这个STM32的USB很久了,最近知道WinUSB这个好东西,可惜国内的资料太少了,出去,终于找到好东西了,不敢藏私,献给各位程序猿同类们,顺便赚点积分^_^
基于CY7C68013的开发USB的设备驱动程序代码
// File: ezusbsys.c // $Archive: /USB/Drivers/ezusbdrv/ezusbsys.c $ // // Purpose: // General purpose USB device driver // // Environment: // kernel mode // // $Author: Mdn $ // // $History: ezusbsys.c $
安装WDK8.1
如题,上文描述了我自己下载WDK8.1版本的过程,接下来就是 安装工作了 1点击wdksetup.exe 2之后来到如下对话框 3 第一项是安装 本地已经下载好的windows kit包 3.1我的已经安装好了的wdk包 3 第二项是下载 "真正的" 安装包了,点击(我这里开始下载,不使用已经下载好了的wdk8.1包) 3.1设置下载保存wdk包的路径,
USB设备驱动详解
• USB总线协议 • USB设备简介 • USB连接拓扑结构 • USB通信的流程 • USB四种传输模式 • 观察USB设备的工具 • USB设备请求 • 设备描述符 • 配置描述符 • 接口描述符 • 端点描述符 • 功能驱动与物理总线驱动 • 构造USB请求包 • 发送USB请求包 • USB设备初始化 • USB设备的插拔 • USB设备的读写 • 小结
linux usb设备驱动(1)
/* * USB Skeleton driver - 2.2 *功能:探测插入usb设备的次数,主要根据linux内核源码usb_skeleton.c修改,本事例以插入手机为例,因为系统原来已经有了u盘设备的驱动 * * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) * * This program
USB设备驱动(1.2)——软件结构
软件结构比硬件结构复杂很多,包含很多层次,如总线驱动,功能驱动,过滤驱动等。 1.总线驱动   位于驱动栈最下层,处理资源分配,自设备管理,负责处理上层驱动发下来的请求。USB设备总线驱动主要有2类:控制器驱动、Hub驱动。(还有一个端口驱动,太偏门,不提也罢)  1.1控制器驱动:usbohci.sys    usbuhci.sys   usbehci.sys       HCI即是 H
USB设备驱动架构.doc
USB设备驱动架构.描述linux下USB驱动程序架构
求助:usb从设备驱动
vxworks5.5下开发usb从设备驱动,不知从何处下手。另外,从设备应用程序要使用usbTool才能测试吗?请大家指教。rnrn风河的文档中只有主设备协议讲的还比较详细
usb设备驱动,可能性评估?
我手上有一个读卡器设备,支持usb和串口,我只有它的windows驱动程序。rn我用串口调试工具配合它的协议可以完全操作这个读卡器,rn也就是说如果我用串口通信的话,在wince下,不需要驱动也能搞定。rn问题是如果我要用wince下的usb host来操作读卡器的话,这个是否可能实现(我只有windows下的驱动,可否通过一些usb的驱动调试工具了解这个读卡器在windows下是如何运作的,然后写一个相应的wince下的设备驱动,这个过程是不是有一些我没办法了解到的信息,因为读卡器上的usb驱动我并不知道它是怎么定义的)?rn分两个步骤:rn1,正确加载读卡器usb设备rn2,配合读卡器通信协议书,找出类似串口的操作办法rnrnrn
关于USB设备驱动的问题
RT:现在是用mfc开发一个程序,在PC机上(window)没有驱动的情况下已经获取到了usb设备的pid,vid,现在该怎么让程序根据以上信息去找到他的对应的驱动并调用函数吧驱动安装上去?
windows下usb设备驱动切换
[img=https://img-bbs.csdn.net/upload/201306/18/1371543867_715934.png][/img]rnrn列表里的前两个是我U盘想用的驱动程序,工作需要,想实现用程序来切换这两个驱动,现在只能用手动更新的方式实现,太麻烦,求思路。VMware Workstation 有这种实现机制(USB设备连接到虚拟机和断开连接),但不知道具体实现,他们应该也是对驱动做了手脚。现在深感驱动水很深啊,而且我还是个业余的,哎
usb设备驱动微软例程
对于做过windows下usb设备驱动的人来说,usbsample这个示例大家应该都不陌生,这个例程稍加改动就可以支持绝大多数的usb设备。这里发出的是截止2014年4月左右,最新版的例程。 64位驱动需要通过微软的HCK2.1测试,进而拿到证书才可以使用,原有的WDK7.1中的例程因为与HCK2.1测试冲突,已经无法使用了(这在你进行HCK2.1测试时会遭遇到),这份例程可以做为参考。
Linux蓝牙协议栈的USB设备驱动
Linux蓝牙协议栈的USB设备驱动
自定义USB下位机和WINUSB下位机区别
自定义USB驱动无法读写下位机
71 linux usb设备驱动
usb接口有大,小口之分 usb有主机(host,大口)/设备(otg, 小口)工作模式usb主机可以主动去操作设备, 主机接口由4根线(vcc, gnd, d+, d-) usb设备被主机操作, 有5根线(vcc, gnd, d+, d-, id), id线可用于区分设备接口 // otg接口即可作主机角色,也可以作设备的角色usb接口可以像树型一样的进行扩展, 可用usb hub芯片(FE1.
JZ2440 usb设备驱动
/* 参考例子:drivers\hid\usbhid\usbmouse.c  * 功能:插入sub鼠标打印:鼠标操作则打印相应的信息  *  * 2016年6月20日22:51:16  */ #include #include #include #include #include #include static struct input_dev
USB设备驱动之驱动
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huangweiqing80/article/details/82999949 上一篇文章USB设备驱动之设备讲到 USB设备的EEPROM中,固化了设备的一些描述信息和一些程序。当USB设备插入USB插槽时,会引起一个电信号的变化,主机控制器捕获这个电信号,并命令USB核心处理对设备的加载工作。US...
关于usb设备驱动的问题
一个设备 通过usb口与系统相连,每秒发送数据到系统中。rn对这方面不是很了解,如何进行开发工作呢。rn是否要编写设备驱动??
linux 下usb设备驱动问题
linux 下usb设备,在root权限下,设备可以正常找到驱动,rn但在普通用户下找不到设备驱动,不知道是什么原因?请高手指教
嵌入式USB设备驱动
有关usb方面的设备驱动和驱动器的设计,摘 要: 介绍了符合 规范 版的嵌入式 设备驱动器的设计。该设计使用消息队列、信令和定时器中断,可以在几种不同的实时操作 USB 1.1 USB 系统中实现。文中所用到的主要概念对于利用单任务架构实现的 外设是通用的。
LDD之USB设备驱动
一,USB设备规范:         USB硬件层由USB设备,USB总线,USB主机控制器组成;         USB驱动层由USB设备侧驱动程序,USB主机控制器驱动程序,USB核心,USB宿主机上的设备驱动程序组成;         如下图(图片来自USB规范):      二,Linux 中USB数据协议的实现:          数据结构:
万能USB视频设备驱动
万能USB视频设备驱动找了好久终于找到了,摄像头的驱动终于装上了
自动安装USB设备驱动的问题
是一个虚拟的USB软驱,有INF和SYS文件,通过WINDOWS弹出的检测界面可以安装成功。我想在我的安装程序里直接将驱动按上,而在插入U盘时就能自动检测到设备ID后自动加载驱动。哪位有类似的程序和方法,请赐教。
USB设备驱动一
usb设备驱动真的很复杂,涉及到的usb设备不同,其设备框架也不同,usb驱动系类主要讲解usb串口驱动(usb-serial),力争面面俱到
USB设备驱动及测试1
看这本《LINUX内核源代码情景分析》,上面讲USB很全怎么写USB设备驱动程序? 1. 分配/设置usb_driver结构体 .id_table .probe .disconnect 2. 注册测试1th/2th: 1. make menuconfig去掉原来的USB鼠标驱动 -> Device Drivers -> HID D
linux usb设备驱动二
urb介绍和定义USB 设备驱动代码通过urb和所有的 USB 设备通讯。 urb用 struct urb 结构描述(include/linux/usb.h )。 urb以一种异步的方式同一个特定USB设备的特定端点发送或接受数据。一个 USB 设备驱动可根据驱动的需要,分配多个 urb 给一个端点或重用单个 urb 给多个不同的端点。设备中的每个端点都处理一个 urb 队列, 所以多个 ur
USB HID设备驱动程序设计
适用于PC的嵌入式操作系统的USB HID设备驱动的设计,并给出了具体的实现方法
USB CAN设备驱动
USB CAN设备驱动,用户在安装软件的同时,即一并将设备驱动安装完毕,用户直接将设备插入电脑即可自动识别。 包含文件: CHUSBDLL.DLL DriverSetup.exe DriverSetup64.exe ECanUsb.dll Thumbs.db USBCANW64.sys USBCANWDM.cat USBCANWDM.INF USBCANWDM.sys
linux 下usb设备驱动问题?
linux 下usb设备,在root权限下,设备可以正常找到驱动, rn但在普通用户下找不到设备驱动,rn怎样才可以在普通用户下使用usb设备?rn请高手指教
DUSE---DOS下的USB存储设备驱动
DUSE---DOS下的USB存储设备驱动,里面有说明的
usb通用设备驱动注册
1. usb设备驱动注册流程图......2. usb设备驱动注册usb_register_device_driver(&amp;amp;usb_generic_driver, THIS_MODULE);usb通用驱动usb_generic_driver结构体struct usb_device_driver usb_generic_driver = { .name = &quot;usb&quot;, .probe = ...
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo