f10f16
驱动牛犊
驱动牛犊
  • 注册日期2003-08-15
  • 最后登录2005-05-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1157回复:2

上位机打不开USB设备

楼主#
更多 发布于:2003-08-16 18:38
{
// SymbolicName = \\??\\USB#Vid_0471&Pid_0666#5&113f64a0&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
//这个来源于机器的注册表
GUID hidGUID={ 0xa5dcbf10, 0x6530, 0x11d2, { 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed } };

GUID *p_hidGUID=&hidGUID;
HDEVINFO hardwareDeviceInfoSet;
    SP_DEVICE_INTERFACE_DATA deviceInterfaceData;
    HANDLE deviceHandle = INVALID_HANDLE_VALUE;
    DWORD result;
    DWORD DeviceIndex=0;
    HidD_GetHidGuid (p_hidGUID);
    hardwareDeviceInfoSet = SetupDiGetClassDevs (p_hidGUID, NULL, NULL,(DIGCF_PRESENT |DIGCF_DEVICEINTERFACE));

   if(hardwareDeviceInfoSet==INVALID_HANDLE_VALUE)
    {
return INVALID_HANDLE_VALUE;
    }
    deviceInterfaceData.cbSize = sizeof(deviceInterfaceData);
    result =SetupDiEnumDeviceInterfaces(hardwareDeviceInfoSet, NULL, p_hidGUID, DeviceIndex, &deviceInterfaceData);
    if (result == FALSE)
    {
        SetupDiDestroyDeviceInfoList (hardwareDeviceInfoSet);
return INVALID_HANDLE_VALUE;
    }
}
程序运行到这就返回了,即result 为 FALSE。我也试过其它值的 hidGUID 以及 DeviceIndex,结果都一样。
敬请指点!
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-19 09:01
单步调试。这是我的程序:
HDEVINFO hardwareDeviceInfo;
PSP_INTERFACE_DEVICE_DETAIL_DATA  functionClassDeviceData = NULL;
SP_INTERFACE_DEVICE_DATA deviceInfoData;
hardwareDeviceInfo = SetupDiGetClassDevs (
                           (LPGUID) &GUID_CLASS_D12_BULK,
                           NULL, // Define no enumerator (global)
                           NULL, // Define no
                           (DIGCF_PRESENT | // Only Devices present
                            DIGCF_INTERFACEDEVICE));


deviceInfoData.cbSize=sizeof(SP_INTERFACE_DEVICE_DATA);
int NumberDevice = 4;
for(int i = 0; i<NumberDevice; i++)
{
SetupDiEnumDeviceInterfaces(hardwareDeviceInfo,
0,(LPGUID) &GUID_CLASS_D12_BULK,
i, &deviceInfoData);
}

ULONG                                predictedLength = 0;
    ULONG                                requiredLength = 0;
SetupDiGetInterfaceDeviceDetail(
            hardwareDeviceInfo,
            &deviceInfoData,
//0,
            NULL, // probing so no output buffer yet
            0, // probing so output buffer length of zero
            &requiredLength,
            NULL);
predictedLength = requiredLength;
functionClassDeviceData =
(PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc (predictedLength);
functionClassDeviceData->cbSize = sizeof (SP_INTERFACE_DEVICE_DETAIL_DATA);
if(!SetupDiGetInterfaceDeviceDetail (
               hardwareDeviceInfo,
               &deviceInfoData,
  //0,
               functionClassDeviceData,
               predictedLength,
               &requiredLength,
               NULL)){
return FALSE;
}

hout = CreateFile(functionClassDeviceData->DevicePath,
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
csyoyo
驱动牛犊
驱动牛犊
  • 注册日期2001-05-19
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-18 20:21
用设备名呢?
游客

返回顶部