如何得到USB设备对应的盘符

如何得到USB设备对应的盘符,第1张

问题描述:移动硬盘不显示原因分析:1 供电不足会导致移动设备无法正常识别2 电脑设置问题3 主板的驱动程序及USB驱动程序异常4 移动硬盘故障简易步骤:我的电脑—右键管理—磁盘管理—移动硬盘—右键更改驱动器和路径—向下的小三角—随意分配一个字母—确定解决方案::方案一:更换usb接口。如果是台式机可以尝试插入到机箱的后面板,(有时候供电不足会导致移动设备无法正常识别)方案二:电脑设置问题1 我的电脑右键点击管理—磁盘管理(如图1)图12 找到移动硬盘,如果上面没有盘符可以手动添加一个盘符。在移动硬盘上单击右键—更改驱动器和路径(如图2)图23 点击更改,点击向下的小三角,随意分配一个字母即可。点击确定(如图3)图3方案三:使用随机光盘重装一下主板的驱动程序及USB驱动程序。方案四:移动硬盘故障,建议移动硬盘售后检修

这篇文章主要介绍了Android中查看USB连接的外接设备信息的代码实例,需要的朋友可以参考下

1,USB存储设备(如:U盘,移动硬盘):

//USB存储设备 插拔监听与 SD卡插拔监听一致。

代码如下:

private USBBroadCastReceiver

mBroadcastReceiver;

IntentFilter iFilter = new IntentFilter();

iFilteraddAction(IntentACTION_MEDIA_EJECT);

iFilteraddAction(IntentACTION_MEDIA_MOUNTED);

iFilteraddAction(IntentACTION_MEDIA_REMOVED);

iFilteraddAction(IntentACTION_MEDIA_UNMOUNTED);

iFilteraddDataScheme("file");

mBroadcastReceiver = new

USBBroadCastReceiver();

registerReceiver(mBroadcastReceiver,

iFilter);

private class USBBroadCastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent)

{

String action = intentgetAction();

if

(actionequals(IntentACTION_MEDIA_EJECT)) {

//USB设备移除,更新UI

} else if

(actionequals(IntentACTION_MEDIA_MOUNTED)) {

//USB设备挂载,更新UI

}

}

}

//获得挂载的USB设备的存储空间使用情况

public static String getUSBStorage(Context context){

// USB Storage

//storage/udisk为USB设备在Android设备上的挂载路径不同厂商的Android设备路径不同。

//这样写同样适合于SD卡挂载。

File path = new File("/storage/udisk");

StatFs stat = new StatFs(pathgetPath());

long blockSize =

statgetBlockSize();

long totalBlocks = statgetBlockCount();

long availableBlocks = statgetAvailableBlocks();

String usedSize =

FormatterformatFileSize(context, (totalBlocks-availableBlocks)

blockSize);

String availableSize = FormatterformatFileSize(context,

availableBlocks blockSize);

return usedSize + " / " +

availableSize;//空间:已使用/可用的

}

2,USB外接输入设备(如:键盘,鼠标,扫描q)

复制代码

代码如下:

try {

//获得外接USB输入设备的信息

Process p=RuntimegetRuntime()exec("cat

/proc/bus/input/devices");

BufferedReader in = new BufferedReader(new

InputStreamReader(pgetInputStream()));

String line = null;

while((line = inreadLine())!= null){

String deviceInfo =

linetrim();

//对获取的每行的设备信息进行过滤,获得自己想要的。

}

} catch (Exception e) {

// TODO: handle

exception

eprintStackTrace();

}

另:设备信息也可以通过 adb

shell 进入执行 cat /proc/bus/input/devices看到。

USB外接输入设备信息打印如下:

复制代码

代码如下:

I: Bus=0003 Vendor=11c0 Product=0030

Version=0110

N: Name="ACRUX USB Keyboard"

P:

Phys=usb-0000:00:040-13/input1

S:

Sysfs=/devices/pci0000:00/0000:00:040/usb1/1-1/1-13/1-13:11/input/input3

U:

Uniq=

H: Handlers=mouse1 event3

B: PROP=0

B: EV=17

B: KEY=70000 0 0

0 0 0 0 0 0

B: REL=103

B: MSC=10

I: Bus=0003 Vendor=11c0

Product=0030 Version=0110 这行信息会在Android设备与USB设备数据交互的是否使用到。

关于USB外接设备如何与Android设备数据数据交互的代码书写可以参考:

>

一般来说移动硬盘正常接入电脑,在我的电脑或计算机磁盘管理中都可以看到新的硬盘盘符号,最简单的直接进入我的电脑就可以看到新的移动硬盘盘符号,开始没看到可以等待一下刷新下我的电脑就看到了,也可以在我的电脑管理中查看。 ①当遇到移动硬盘不显示我们首先检查移动硬盘的数据线是否连接好了电脑与移动硬盘了没有,有的时候由于没插好,导致电脑无法识别移动硬盘的情况也比较多, 另外当移动硬盘USB连接良好后,我们看下主机USB接受是否不良,换个接口试试,前面的不行,换后面的再试。电脑死机的原因 电脑经常死机怎么办? PS:有的电脑由于前置USB接口并没连接到主板接口,导致前面USB接口不可用的有很多,所以这个也需要注意下。 ②当确保电脑主机USB接口是可用,并且数据线与硬件连接牢固后,移动硬盘依然无法显示我们可以尝试重新拔掉主机US接口,稍等下再次插入来尝试一下,笔 者遇到过不少这种情况,开始接入电脑提示有因设备接入,但在我的电脑里却看不到移动硬盘盘符,反复重新插拔几下结果就有了。 ③先拿到别的电脑上去试一下,如果正常,就是你系统的事,如果不正常,就是你硬盘或则硬盘USB线的问题。先找个好的USB线试吧,还是不行就是硬盘的事情了,送修吧,一般硬盘我们也不会修。如果是自己系统的问题,你从设备管理器里看,移动硬盘前有无异常图标,比如问号感叹号之类的,有就添加新硬件,重新找一下,并且检查下电脑服务项是否禁止 了相关服务,实在没法又不知问题出在哪里的朋友可以把系统恢复到正常(如:一键还原或重新安装系统)时,然后接上试,一般问题都可以解决。还有问题……最 后一次查看BIOS里设置或将BIOS直接恢复到出厂设置,还不行,检查你的主板吧。 分两种情况: 1、电脑的USB接口本身不是高速接口,而移动硬盘为高速硬盘,所以即使通电正常也无法显示移动硬盘区;可以查看电脑的USB接口,一般电脑会有几个 USB接口,如果前置的效果不好,尽可能使用后置USB,并最好是接到与移动硬盘相匹配的USB接口上。提示“打印机后台程序服务没有运行”的解决办法! 2、因移动硬盘对供电有要求,如果电脑的USB接口供电不足,移动硬盘一样会亮灯,也会有转速,但因取电不足,无法正常运行,当然不会在电脑上显示移动硬盘的盘符了。当然以上情况是确保移动硬盘是良好的,如果无法确定移动磁盘是否良好,可用笔记本试,因为笔记本给移动磁盘供电是通过移动磁盘数据线双头供电的,一般来 说,移动硬盘突然不认盘了,有多种可能。首先,检查USB接口,换一个USB接口试下,有条件的话换一个电脑试下,这里要提醒的是,尽量接在电脑后置的 USB接口,因为机箱前置的USB接口可能电压不稳定。其次,重新安装移动硬盘盒,或者更换一个移动硬盘盒和数据线尝试;最后如果排除以上问题,就有可能 是盘体故障了,这时应该停止继续通电尝试,如果硬盘还在保修就去保修。

ifdatacbSize = sizeof(ifdata); // 枚举符合该GUID的设备接口 bResult = ::SetupDiEnumDeviceInterfaces( hDevInfoSet, // 设备信息集句柄 NULL, // 不需额外的设备描述 (LPGUID)&HARDDISK_GUID,//GUID_CLASS_USB_DEVICE, // GUID (ULONG)nCount, // 设备信息集里的设备序号 &ifdata); // 设备接口信息 if (bResult) { ULONG predictedLength = 0; ULONG requiredLength = 0; // 取得该设备接口的细节(设备路径) bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 NULL, // 设备接口细节(设备路径) 0, // 输出缓冲区大小 &requiredLength, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 // 取得该设备接口的细节(设备路径) predictedLength=requiredLength; // if(pDetail) // { // pDetail =NULL; // } pDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, predictedLength); pDetail- >cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 pDetail, // 设备接口细节(设备路径) predictedLength, // 输出缓冲区大小 &requiredLength, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 if (bResult) { // 复制设备路径到输出缓冲区 for(int i=0;i <17;i++){ ch[i]=(pDetail- >DevicePath+8+i); } ch[17]= "/0 "; if (strcmp(ch,"vid_11dd&pid_0101")==0 ¦ ¦ strcmp(ch,"vid_11dd&pid_11dd")==0 ¦ ¦ strcmp(ch,"vid_0101&pid_0101")==0 ¦ ¦ strcmp(ch,"vid_0101&pid_11dd")==0) //比较版本号,防止意外出错 { len = strlen(pDetail- >DevicePath); devicename = new char[len]; memset(devicename, 0, len); for(int i=0;i <(len-38);i++) { ch[i]=(pDetail- >DevicePath+i); } ch[len-38]= "/0 "; memset(volume, 0, MAX_PATH); } } } nCount++; } // 释放设备接口数据空间 ::GlobalFree(pDetail); // 关闭设备信息集句柄 ::SetupDiDestroyDeviceInfoList(hDevInfoSet); }

USB设备实例路径是由Windows系统自动生成的,通常情况下不建议修改。如果你需要更改USB设备的实例路径,可以尝试以下方法:

1 更换USB接口:将USB设备插入到另一个可用的USB接口上,这样系统会重新生成新的实例路径。

2 卸载并重新安装驱动程序:在“设备管理器”中找到对应的USB设备,在右键菜单中选择“卸载设备”,然后再次插入该设备以重新安装驱动程序。

3 修改注册表项:请注意,这种方法需要谨慎 *** 作,并且可能会导致系统出现问题。首先打开注册表编辑器(按Win+R键输入regedit),然后找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB目录下与要修改的USB相关联的子项,在其中查找Device Parameters或DeviceInstancePath等关键字进行修改。

无论采取哪种方式,请务必事先做好数据备份和恢复准备,并确保对计算机有足够了解和掌握相应技能。

驱动一般是 ini sys文件,这文件不能直接安装的,

一般要将设备插入到计算机,xp就会提示找到新设备,

提示安装驱动程序,此时在路径中输入那个 ini文件的地址就可以了。

你插了之后没反应,可能是你第一次插时没有驱动,系统将它标示为unknown设备了。

以上就是关于如何得到USB设备对应的盘符全部的内容,包括:如何得到USB设备对应的盘符、如何查看USB方式连接Android设备的外接设备信息、如何通过USB设备路径得到它的盘符信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9324495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存