问题描述

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

新人一只,本身是做硬件的,现在要编写硬件(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, USBVID_0308&PID_0110; ========== Class definition ===========[ClassInstall32]
AddReg = ClassInstall_AddReg[ClassInstall_AddReg]
HKR,,,,%ClassName%
HKR,,NoInstallClass,,1
HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%system32setupapi.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-ProcessingWdfCoInstaller: [03/15/2016 20:12.05.706] error locating section [USB_Install.Wdf] in inf C:WindowsINFoem107.inf - status(E0000101) <no error text>WdfCoInstaller: [03/15/2016 20:12.05.849] DIF_INSTALLDEVICE: Pre-ProcessingWdfCoInstaller: [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

解决方案

问题已经解决。使用了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

visual studio-wdk8.1+vs2013中使用winusb模版开发usb设备驱动相关推荐

  1. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

    Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...

  2. 微软 Visual Studio 2019 16.5 发布:.NET 移动开发、生产力

    微软最新发布了 Visual Studio 2019 16.5 版本,下面来看看主要更新内容: .NET 移动开发 首先要讨论的特性是 XAML Hot Reload for Xamarin.Form ...

  3. 使用.NET Core 3.0 预览版,Web API和Visual Studio 2019进行ASP.NET Core Blazor游戏开发

    目录 介绍 使用ASP.NET核心Blazor创建这个奇怪的图像输出应用程序应该知道什么? 背景 先决条件 Visual Studio 2019 .NET Core 3.0 Preview SDK B ...

  4. 用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)

      在前一篇文章用Visual Studio Code配合Linux子系统进行C/C++开发(初级篇)里面,我们搭建了C/C++的开发环境,但是还不能调试,这怎么能行,下面,我们就把这个功能也配置起来 ...

  5. Visual Studio 2017 C# 对 AutoCad2014 的二次开发设置

    Visual Studio 2017 C# 对 AutoCad2014 的二次开发设置 开发平台:vs2017,win10,CAD2014 建立类库,引用文件 建立类库 从AutoCAD安装目录下添加 ...

  6. Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制

    使用shell脚本实现USB设备的加载与文件复制 在Linux操作系统中,如果插入一个USB设备,需要用mount挂载命令才能实现这个设备的加载,下面写一个USB设备挂载与文件复制的Shell程序,程 ...

  7. STM32MP157驱动开发——platform设备驱动(中)

    STM32MP157驱动开发--platform设备驱动(中) 0.前言 一.platform设备模块--设备信息解析 二.platform驱动模块--加载设备 三.测试App 四.编译及运行 相关文 ...

  8. php调用linux摄像头,Linux_Linux中开发USB摄像头驱动详解,USB摄像头以其良好的性能和低 - phpStudy...

    Linux中开发USB摄像头驱动详解 USB摄像头以其良好的性能和低廉的价格得到广泛应用.同时因其灵活.方便的特性,易于集成到嵌入式系统中.但是如果使用现有的符合Video for Linux标准的驱 ...

  9. Windows 7 离线安装Visual Studio 2013(VS2013)

    1. 离线安装VS2013必须先将IE升级至IE10以上 离线升级IE 首先系统必须是sp1的,然后安装KB2670838.KB2729094.KB2731771.KB2786081.KB283414 ...

  10. visual studio asmx 调试_通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序...

    最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易.一直习惯在Visual Studio中进行编码和调试.现在我想的是可以简单快速的测 ...

最新文章

  1. jenkins+docker部署java项目
  2. 石正丽/周鹏团队发表冠状病毒新研究,进一步证明新冠非实验室泄漏
  3. Spring Boot入门——全局异常处理
  4. web网页获取,cookie 的管理,post和get方式的模拟。
  5. repeater用法一步一步详讲,用来绑定和显示数据信息
  6. optee中MMU内存管理模型-页表的建立模型
  7. nginx 配置文件的匹配规则
  8. 关于PF_INET和AF_INET的区别
  9. Filecoin Gas基础费率升至5.06 nanoFIL
  10. 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。...
  11. android 判断服务是否运行
  12. 基于Python分析实现酒店评论的中文情感
  13. Visio2016 层次方框图
  14. 微信小程序超链接跳转页面
  15. Unity3D游戏开发从零单排(四) - 制作一个iOS游戏
  16. python性能差_Python 性能分析大全
  17. java排序接口ComparableT 的实现与使用
  18. PCB数字地,模拟地,电源地
  19. java找不到文件_Java常见问题之javac Hello.java找不到文件的解决方法
  20. 活动星投票午间修身自习室制作在线投票投票制作网页

热门文章

  1. 使用DirectX播放wav声音文件
  2. 初识Lazarus和Free Pascal Compiler
  3. Python办公自动化【Word】
  4. Js实现炫酷仿抖罗盘时钟------Sestid
  5. DataFormatString--格式化字符串
  6. 高手对中科院考博英语的体会
  7. deepfacelive实时AI换脸直播使用教程
  8. 独立游戏人:像素风格游戏制作分享(转)
  9. Java万年显示和查询_Java 万年历
  10. Ubuntu18.04安装可视化软件Pyviz