timonkun
驱动牛犊
驱动牛犊
  • 注册日期2008-08-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望89点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2778回复:3

请教WINCE下USB AUDIO设备驱动问题

楼主#
更多 发布于:2009-02-25 14:31
        在WINCE6.0上做一个基于PCM2704芯片的USB AUDIO设备驱动。这是一个USB混合设备,有Audio Class 和HID Class两种接口。此设备有三个Interface,分别是Audio Control,Audio Stream,HID Interface。三个EndPoint,分别是Default EP0,Audio Stream Interface EP2 Output Isoc,HID EP5 Input Interrupt。HID用来调节音量大小。

我的问题:
1、把Audio Class 和HID Class的驱动分开成两个DLL实现?还是合并成一个DLL实现?合并实现的话,Audio Class,HID Class的处理都混在一起,这样做不好吧?

2、分开实现的话,在注册表中应该如何设置?才能够将Audio Class 和HID Class分成两个DLL加载?

现在我只能加载上去一个DLL,成功后就不再提示第二个了。
用一个DLL加载的设置如下,能够正常加载DLL文件。
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\2235_9988\Default\Default\UsbAudio_Class]
   "Prefix" = "WAV"
   "Dll" = "UsbAudio.Dll"
   "FriendlyName" = "UsbAudio Driver"

[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\UsbAudio_Class]
   "Prefix" = "WAV"
   "Dll" = "UsbAudio.Dll"

3、我尝试在[HKEY_LOCAL_MACHINE\Drivers\HID\LoadClients\2235_9988\Default\12_1\AudioHid]下添加HID设备注册信息,但是驱动DLL加载失败。
12_1 是根据下面的信息确定的
Usage Page: 12 (Consumer)
Usage: 1 (Consumer Control)

4、我又尝试在USBDeviceAttach函数中调用lpLoadGenericInterfaceDriver函数加载HID驱动,虽然返回值表示成功但是却没有任何效果。
我是这样调用的:
lpUsbFuncs->lpLoadGenericInterfaceDriver(hDevice, pUsbAudio->usbhidIF.lpHidIF);
pUsbAudio->usbhidIF.lpHidIF是之前通过lpGetDeviceInfo获取到的接口句柄。

5、网上找到一个usb camera的源码,看着好复杂啊~~~ 我都不知道USB Audio驱动该从何处入手了,现在仅仅是实现了USBDeviceAttach,USBInstallDriver,USBUnInstallDriver三个函数,让驱动DLL能够正常加载了,后面该做什么我现在一点头绪都没有。。。
各位前辈有谁做过USB Audio驱动么,希望各位大大能够指点一二,给点思路也好,多谢撒~~~
MacWin
驱动中牛
驱动中牛
  • 注册日期2002-12-16
  • 最后登录2009-05-27
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望44点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-02-26 15:39
Audio Class 和HID Class的驱动是分成两个DLL实现的. wince 没有提供usb audio driver的例子,你参考pci audio diriver + usb printor driver就可以写出usb audio driver. 上层接口参考pci audio driver,下层调用参考usb printor driver.
Chen
timonkun
驱动牛犊
驱动牛犊
  • 注册日期2008-08-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望89点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-02-27 10:45
引用第1楼MacWin于2009-02-26 15:39发表的  :
Audio Class 和HID Class的驱动是分成两个DLL实现的. wince 没有提供usb audio driver的例子,你参考pci audio diriver + usb printor driver就可以写出usb audio driver. 上层接口参考pci audio driver,下层调用参考usb printor driver.



哇,太感谢啦
我已经迷途好久了,乏人指点
再次谢谢!

深入问一下:现在我只能加载上去一个DLL,成功后就不再提示第二个了。如何才能把HID的DLL也加载上去呐?HID的注册表怎么设置吖?
注册表是这样设置的:
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\2235_9988\Default\Default\UsbAudio_Class]
  "Prefix" = "WAV"
  "Dll" = "UsbAudio.Dll"
  "FriendlyName" = "UsbAudio Driver"

[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers\UsbAudio_Class]
  "Prefix" = "WAV"
  "Dll" = "UsbAudio.Dll"
wang_wcj
驱动小牛
驱动小牛
  • 注册日期2002-04-14
  • 最后登录2010-05-14
  • 粉丝0
  • 关注0
  • 积分213分
  • 威望253点
  • 贡献值1点
  • 好评度82点
  • 原创分0分
  • 专家分0分
地板#
发布于:2009-08-12 11:37
你可以添加一个order
游客

返回顶部