hulihutu
驱动牛犊
驱动牛犊
  • 注册日期2004-05-12
  • 最后登录2006-10-26
  • 粉丝0
  • 关注0
  • 积分111分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:1605回复:2

如何在应用程序中找到USB设备的路径?

楼主#
更多 发布于:2004-05-13 15:48
已经郁闷好几天了,一直没有搞定。
使用了从网上找到的无数的例子,都不行。

请问在知道你的USB的GUID的情况下,如何获得改设备的路径,
恳请大侠们不吝赐教。

万分感谢。

最新喜欢:

Biii38Biii38
mingge
驱动小牛
驱动小牛
  • 注册日期2004-03-19
  • 最后登录2004-11-22
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-14 12:21
这是个在命令提示符下的程序。
工程里应link setupapi.lib
主程序:
#include \"windows.h\"
#include \"setupapi.h\"
#include \"stdio.h\"
#include \"initguid.h\"
#include \"GUID.h\"  //此处为你定义GUID的头文件
#include \"winioctl.h\"

HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance);

void main(int argc, char* argv[])
{  
HANDLE hWdm1 = GetDeviceViaInterface((LPGUID)&MY_GUID,0);
}
HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance)
{
// Get handle to relevant device information set
HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
if(info==INVALID_HANDLE_VALUE)
{
printf(\"No HDEVINFO available for this GUID\\n\");
return NULL;
}

// Get interface data for the requested instance
SP_INTERFACE_DEVICE_DATA ifdata;
ifdata.cbSize = sizeof(ifdata);
if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, instance, &ifdata))
{
printf(\"No SP_INTERFACE_DEVICE_DATA available for this GUID instance\\n\");
SetupDiDestroyDeviceInfoList(info);
return NULL;
}

// Get size of symbolic link name
DWORD ReqLen;
SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);
PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);
if( ifDetail==NULL)
{
SetupDiDestroyDeviceInfoList(info);
return NULL;
}

// Get symbolic link name
ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);
if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))
{
SetupDiDestroyDeviceInfoList(info);
delete ifDetail;
return NULL;
}

printf(\"Symbolic link is %s\\n\",ifDetail->DevicePath);
// Open file
HANDLE rv = CreateFile( ifDetail->DevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( rv==INVALID_HANDLE_VALUE) rv = NULL;

delete ifDetail;
SetupDiDestroyDeviceInfoList(info);
return rv;
}


 :D
在我第一次迷失方向的时候 在那盏路灯下 你告诉我 相走田 马走日 在我第一次出门的时候 在那盏路灯下 你告诉我 当头炮 马先跳 在我第一次面对世界的时候 我告诉我 拱卒啊 过河啊 冲啊 吃啊 将啊 将将将将 将啊在我回家的那天 面对我自己 我吃我的车 我吃我的马 我吃我的炮 我吃我的车 我吃我的马 我吃我的炮 我吃我的心啊 吃啊 将啊 将将将将 将啊
hulihutu
驱动牛犊
驱动牛犊
  • 注册日期2004-05-12
  • 最后登录2006-10-26
  • 粉丝0
  • 关注0
  • 积分111分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-14 15:59
多谢回复,我按照你的提示来试试。
游客

返回顶部