USB设备对应盘符,怎么知道USB挂载了那些盘符 目前使用 usbview 例子,遍历出usb 设备但是不知道怎么跟盘符挂钩比如一个USB设备挂载到了F盘,或者他还有分区F ,H盘等 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 搜“devcon”?仅供参考:#include "stdafx.h"using namespace std;struct { UINT type; LPCSTR name;} DriveTypeFlags [] = {// GetDriveType返回码与人可读字符串对照表 {DRIVE_UNKNOWN ,"未知" }, {DRIVE_NO_ROOT_DIR ,"无效路经" }, {DRIVE_REMOVABLE ,"可移动" }, {DRIVE_FIXED ,"固定" }, {DRIVE_REMOTE ,"网络驱动器" }, {DRIVE_CDROM ,"CD-ROM" }, {DRIVE_RAMDISK ,"随机存取磁盘"}, {0 , NULL },};int _tmain() { if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { cerr << _T("Fatal Error: MFC initialization failed") << endl; return -1; } // 获取逻辑驱动器字符串- a:\<null>b:\<null>c:\<null>...z:\<null><null> // 还可以用GetLogicalDrives以位图形式代替字符串形式获取信息 TCHAR buf[200]; DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf); string msg = "逻辑驱动器:\n"; for (TCHAR* s=buf; *s; s+=_tcslen(s)+1) { LPCTSTR sDrivePath = s; msg += sDrivePath; msg += " "; UINT uDriveType = GetDriveType(sDrivePath); for (int i=0; DriveTypeFlags[i].name; i++) { if (uDriveType == DriveTypeFlags[i].type) { msg += DriveTypeFlags[i].name; break;// } } msg += '\n'; } cout << msg.c_str(); return 0;} 我也用过这个,后面采取的是用哪个例子遍历出插入的设备的,然后通过遍历出的vpid 去匹配的注册表 但是这个办法 好像也不是很好样 如果多个u盘插拔 会造成一些错误 是啊,两个一样的设备不是就GG了这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410你要是只用vpid的话 那确实会 是啊,两个一样的设备不是就GG了这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410你要是只用vpid的话 那确实会 哦,能不能发一份例子啊 哦,能不能发一份例子啊额 今天才看到 // 遍历盘符void CGetBusRelationshipHandle::getRegistryDiskInfo(){ HKEY hKey; //定义有关的hKey,在查询结束时要关闭。 LPCTSTR path = "SYSTEM\\CurrentControlSet\\Services\\disk\\Enum"; LONG return0 = ( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, path, 0, KEY_READ, &hKey ) ); if ( return0 != ERROR_SUCCESS ) { int err = GetLastError(); // MessageBox( "错误:无法打开有关的键!" ); cout << "错误:无法打开有关的键!" << endl; } TCHAR portName[ 255 ], commName[ 255 ]; DWORD dwLong, dwSize; int i = 0; while ( 1 ) { dwLong = dwSize = sizeof( portName ) / sizeof( TCHAR ); if ( ::RegEnumValue( hKey, i, portName, &dwLong, NULL, NULL, ( PUCHAR )commName, &dwSize ) == ERROR_NO_MORE_ITEMS ) { break; } else { mapDevice.insert( make_pair( strToLower(commName), portName ) ); } i++; } //cout << commName << endl;} deviceDesc = DriverNameToDeviceDesc( driverKeyName, deviceID, strChild );MAPDEVICE::iterator iter = mapDevice.find( strChild ); if ( iter != mapDevice.end() ) USB\VID_05E3&PID_0735&REV_5410是啊,两个一样的设备不是就GG了这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410你要是只用vpid的话 那确实会 我想请问一下USB\VID_05E3&PID_0735 这个是个创惟什么型号的芯片 for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (echo %%a GetLogicalDrives +GetDriveType 是啊,两个一样的设备不是就GG了这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410你要是只用vpid的话 那确实会 我想请问一下USB\VID_05E3&PID_0735 这个是个创惟什么型号的芯片http://www.linux-usb.org/usb.ids在这里去看嘛 vid 是买的 pid 是厂家自定义的 ,, 这个上面找不到 也就不知道怎么找了 LookupProcessByName失败,错误码5 VC中的CString strdup 一个最简单的多线程程序,出错了,很郁闷!解决马上给分!在线等. 为什么消息没有办法反射呀!在线等待 2000人民币求提取PDF文件文本内容。 请问如何设置MFC基本对话框边框颜色 我是新手,有个简单问题想问。 对话框中控件焦点切换过程中的会发送什么事件? 四个问题之二 求助:COM连接点(回调)如何传结构参数? 请大家帮忙辨认一个工业相机
仅供参考:#include "stdafx.h"
using namespace std;
struct {
UINT type; LPCSTR name;
} DriveTypeFlags [] = {// GetDriveType返回码与人可读字符串对照表
{DRIVE_UNKNOWN ,"未知" },
{DRIVE_NO_ROOT_DIR ,"无效路经" },
{DRIVE_REMOVABLE ,"可移动" },
{DRIVE_FIXED ,"固定" },
{DRIVE_REMOTE ,"网络驱动器" },
{DRIVE_CDROM ,"CD-ROM" },
{DRIVE_RAMDISK ,"随机存取磁盘"},
{0 , NULL },
};
int _tmain() {
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {
cerr << _T("Fatal Error: MFC initialization failed") << endl;
return -1;
} // 获取逻辑驱动器字符串- a:\<null>b:\<null>c:\<null>...z:\<null><null>
// 还可以用GetLogicalDrives以位图形式代替字符串形式获取信息
TCHAR buf[200];
DWORD len = GetLogicalDriveStrings(sizeof(buf)/sizeof(TCHAR),buf); string msg = "逻辑驱动器:\n";
for (TCHAR* s=buf; *s; s+=_tcslen(s)+1) {
LPCTSTR sDrivePath = s;
msg += sDrivePath;
msg += " ";
UINT uDriveType = GetDriveType(sDrivePath);
for (int i=0; DriveTypeFlags[i].name; i++) {
if (uDriveType == DriveTypeFlags[i].type) {
msg += DriveTypeFlags[i].name;
break;//
}
}
msg += '\n';
}
cout << msg.c_str();
return 0;
}
但是这个办法 好像也不是很好样 如果多个u盘插拔 会造成一些错误
这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410
你要是只用vpid的话 那确实会
这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410
你要是只用vpid的话 那确实会 哦,能不能发一份例子啊
哦,能不能发一份例子啊
额 今天才看到 // 遍历盘符
void CGetBusRelationshipHandle::getRegistryDiskInfo()
{
HKEY hKey; //定义有关的hKey,在查询结束时要关闭。
LPCTSTR path = "SYSTEM\\CurrentControlSet\\Services\\disk\\Enum";
LONG return0 = ( ::RegOpenKeyEx( HKEY_LOCAL_MACHINE, path, 0, KEY_READ, &hKey ) );
if ( return0 != ERROR_SUCCESS )
{
int err = GetLastError();
// MessageBox( "错误:无法打开有关的键!" );
cout << "错误:无法打开有关的键!" << endl;
} TCHAR portName[ 255 ], commName[ 255 ];
DWORD dwLong, dwSize;
int i = 0;
while ( 1 )
{
dwLong = dwSize = sizeof( portName ) / sizeof( TCHAR );
if ( ::RegEnumValue( hKey, i, portName, &dwLong, NULL, NULL, ( PUCHAR )commName, &dwSize ) == ERROR_NO_MORE_ITEMS )
{
break;
}
else
{
mapDevice.insert( make_pair( strToLower(commName), portName ) );
}
i++;
}
//cout << commName << endl;
} deviceDesc = DriverNameToDeviceDesc( driverKeyName, deviceID, strChild );
MAPDEVICE::iterator iter = mapDevice.find( strChild );
if ( iter != mapDevice.end() )
这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410
你要是只用vpid的话 那确实会 我想请问一下USB\VID_05E3&PID_0735 这个是个创惟什么型号的芯片
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (
echo %%a
这个好像不会吧 , 我用的是全信息匹配 如 USB\VID_05E3&PID_0735&REV_5410
你要是只用vpid的话 那确实会 我想请问一下USB\VID_05E3&PID_0735 这个是个创惟什么型号的芯片
http://www.linux-usb.org/usb.ids
在这里去看嘛 vid 是买的 pid 是厂家自定义的 ,, 这个上面找不到 也就不知道怎么找了