snow2moutain
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2009-12-16
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1240回复:3

无法获取设备描述符?

楼主#
更多 发布于:2003-12-12 23:35
我写一个跟Cypress Thermometer类似的usb驱动。
采用DS开发,win2000平台。
还没开始写读写函数,想先实现安装。

现在呢,是在OnStartDevice函数出错,在KUsbLowerDevice::ActivateConfiguration(1)处返回了AC_FAILED_TO_GET_DESCRIPTOR。
这个函数就是为了处理配置设备的。但我却无法获取设备描述符。

NTSTATUS UsbDemoDevice::OnStartDevice(KIrp I)
{
NTSTATUS status = STATUS_UNSUCCESSFUL;
AC_STATUS acStatus = AC_SUCCESS;
I.Information() = 0;
acStatus = m_Lower.ActivateConfiguration(
1);

switch (acStatus)
{
case AC_SUCCESS:
t << \"USB Configuration OK\\n\";
            GetStringDescriptors();
status = STATUS_SUCCESS;
break;
case AC_FAILED_TO_GET_DESCRIPTOR:
t << \"Failed to get devicedescriptor\\n\";
break;
          //出错!!!
         }
}

再softice跟踪进去这个ActivateConfiguration函数, 出错在:
status = GetDeviceDescriptor( &desc );
if ( !NT_SUCCESS(status) )
{
acstatus = AC_FAILED_TO_GET_DESCRIPTOR;
goto Exit;
}
  确实是这里获取设备描述符出错。
好烦,安装上驱动出现一个感叹号!

哪位提供一下建议,谢谢!



在前面的初始化声明是:
m_Interface.Initialize(
m_Lower, //KUsbLowerDevice
0, //InterfaceNumber
1, //ConfigurationValue
0 //Initial Interface Alternate Setting
);

// Initialize each Pipe object
m_Endpoint1IN.Initialize(m_Lower, 0x81, 8);
这些都没有问题啊。

用DDK里的usbview,运行测试了一下:
Device Descriptor:
bcdUSB:             0x0110
bDeviceClass:         0x00
bDeviceSubClass:      0x00
bDeviceProtocol:      0x00
bMaxPacketSize0:      0x08 (8)
idVendor:           0x1111
idProduct:          0x2222
bcdDevice:          0x0001
iManufacturer:        0x01
iProduct:             0x02
iSerialNumber:        0x00
bNumConfigurations:   0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x00
Device Bus Speed:      Low
Device Address:       0x02
Open Pipes:              0


打开的管道竟然是0个,难道是固件的问题?但是我已成功开发了linux下的驱动啊。




[编辑 -  12/12/03 by  snow2moutain]
snow2moutain
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2009-12-16
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-13 13:32
自己顶一下。  :)
有人能说说这是哪里出了问题么?
yux008007
驱动牛犊
驱动牛犊
  • 注册日期2003-10-12
  • 最后登录2004-12-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-13 14:05
我写的那个根具体的芯片无关,纯粹的API而已,所以帮不了你
snow2moutain
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2009-12-16
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-13 21:34
搞定了,原来是自己安装顺序搞的不好。因为要屏蔽系统自带的驱动。

另外,最好别用DS自带的安装工具,我就是贪简便。

游客

返回顶部