holy8848
驱动牛犊
驱动牛犊
  • 注册日期2004-05-11
  • 最后登录2004-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2209回复:6

请大家帮忙,hid设备应用程序查找vid,pid出错,谢谢

楼主#
更多 发布于:2004-09-27 10:32
做了个Hid的设备测试(jb8),USBcheck检测都通过,用usbview软件也可以看到是“人机接口设备”,且可以识别出vid和pid,但用自己做的应用程序总是搜索不到此hid设备,和它放到他旁边usb接口的罗技鼠标可以找到,其vid应该是046d,但显示出来是13987。而我的hid设备根本检测不到,用前面的usbport程序结果也是如此,而在注册表里我已经看到了这两个设备
void CUSBPortDlg::OnSearch()
{
// TODO: Add your control notification handler code here
m_strLog.Empty();

m_strLog = _T("ÕýÔÚ²éÕÒϵͳÖÐHIDÀàµÄGUID±êʶ...\r\n");
SetDlgItemText(IDC_EDIT_REPORT,m_strLog);

// ²éÕÒ±¾ÏµÍ³ÖÐHIDÀàµÄGUID±êʶ
GUID guidHID;
HidD_GetHidGuid(&guidHID);
m_strLog += _T("HIDÀàµÄGUID±êʶΪ\r\n");

CString strShow;
strShow.Format("%08x-%04x-%04x-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x\r\n",
guidHID.Data1,guidHID.Data2,guidHID.Data3,guidHID.Data4[0],
guidHID.Data4[1],guidHID.Data4[2],guidHID.Data4[3],guidHID.Data4[4],
guidHID.Data4[5],guidHID.Data4[6],guidHID.Data4[7]);

m_strLog += strShow;
SetDlgItemText(IDC_EDIT_REPORT,m_strLog);

// ×¼±¸²éÕÒ?ûºÏHID¹æ?¶µÄUSBÉ豸
HDEVINFO hDevInfo = SetupDiGetClassDevs(&guidHID,NULL,0,
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);

UINT nIndex = 0;
m_strLog += _T("ÕýÔÚ²éÕÒ¿ÉÓõÄUSBÉ豸...\r\n");
SetDlgItemText(IDC_EDIT_REPORT,m_strLog);

// ²éÕÒUSBÉ豸½Ó¿Ú
SP_DEVICE_INTERFACE_DATA strtInterfaceData;
    strtInterfaceData.cbSize = sizeof(strtInterfaceData);

BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&guidHID,0,
&strtInterfaceData);
if (!bSuccess)
{
m_strLog += _T("±§Ç¸£¬Î´ÕÒµ½¿ÉÓõÄUSBÉ豸");
SetupDiDestroyDeviceInfoList(hDevInfo);
return;
}

    DWORD Length;

//****************************************************//
//   SetupDiGetDeviceInterfaceDetail   setupapi.dll   //
//   ´«»ØÉ豸µÄÂ?¾¶                                   //
//****************************************************//

SetupDiGetDeviceInterfaceDetail(hDevInfo,&strtInterfaceData,
NULL,0,&Length,NULL);
    PSP_DEVICE_INTERFACE_DETAIL_DATA strtDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)
malloc(Length);

    strtDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

    if (!SetupDiGetDeviceInterfaceDetail(hDevInfo,&strtInterfaceData,
strtDetailData,Length,NULL,NULL))
{
//AfxMessageBox(_T("²éÕÒÉ豸Â?¾¶Ê±³ö´í!"));
MessageBox("Not find the path of device!","Error",MB_ICONERROR);
SetupDiDestroyDeviceInfoList(hDevInfo);
return;
}

// ÕÒµ½ÁËÉ豸Â?¾¶
m_strPath = strtDetailData->DevicePath;
strShow.Format("¿ÉÒÔͨ¹ýÂ?¾¶%s?ÃÎÊÉ豸\r\n",m_strPath);
m_strLog += strShow;
SetDlgItemText(IDC_EDIT_REPORT,m_strLog);

// ¿ª?ÅÓëÉ豸µÄͨÐÅ
HANDLE hCom = CreateFile(m_strPath,GENERIC_READ | GENERIC_WRITE,
0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("ÎÞ?¨´ò¿ªÍ¨ÐŶ˿Ú"));
SetupDiDestroyDeviceInfoList(hDevInfo);
return;
}

// ²éѯÉ豸±êʶ
HIDD_ATTRIBUTES strtAttrib;
m_strPath += _T("ÕýÔÚ¶ÁÈ¡É豸µÄ±êʶ...\r\n");
SetDlgItemText(IDC_EDIT_REPORT,m_strPath);

if (!HidD_GetAttributes(hCom,&strtAttrib))
{
AfxMessageBox(_T("²éѯÉ豸״̬ʱ³ö´í!"));
CloseHandle(hCom);
SetupDiDestroyDeviceInfoList(hDevInfo);
}

// ½«ÓйظÃÉ豸µÄ±êʶÏÔʾ³öÀ´
m_strPath += _T("ÒѶÁÈ¡£¬¼ûÓÒ±ßËùʾ\r\n");
SetDlgItemText(IDC_EDIT_REPORT,m_strPath);

// ÏÔʾ¹?Ó¦É̱êʶ
strShow.Format("0x%x",strtAttrib.VendorID);
SetDlgItemText(IDC_ID_VENDOR,strShow);

// ÏÔʾ²úÆ?±êʶ
strShow.Format("0x%x",strtAttrib.ProductID);
SetDlgItemText(IDC_ID_PRODUCT,strShow);

// ÏÔʾ²úÆ?°æ±¾ºÅ
strShow.Format("%d",strtAttrib.VersionNumber);
SetDlgItemText(IDC_ID_VERSION,strShow);

// ÊÍ?Å×ÊÔ´
CloseHandle(hCom);
SetupDiDestroyDeviceInfoList(hDevInfo);
}

那位兄弟遇到过这个情况
holy8848
驱动牛犊
驱动牛犊
  • 注册日期2004-05-11
  • 最后登录2004-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-27 16:58
顶顶
holy8848
驱动牛犊
驱动牛犊
  • 注册日期2004-05-11
  • 最后登录2004-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-27 13:31
你是用D12+8051吗?

我用的是moto的jb8,字带usb模块阿
yhw1234_0
驱动牛犊
驱动牛犊
  • 注册日期2004-04-16
  • 最后登录2005-06-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-27 13:00
到www.winchiphead.com上你会找到答案的
YKY8871212
驱动牛犊
驱动牛犊
  • 注册日期2003-07-03
  • 最后登录2007-06-20
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-27 12:56
你是用D12+8051吗?
holy8848
驱动牛犊
驱动牛犊
  • 注册日期2004-05-11
  • 最后登录2004-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-27 12:12
请大侠们帮帮忙吧!
holy8848
驱动牛犊
驱动牛犊
  • 注册日期2004-05-11
  • 最后登录2004-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-27 10:35
这是显示的图片
到底我还需要做一个驱动程序嘛还是直接作应用程序就可以了(这个显示可不可以不出现呢?)
游客

返回顶部