如何识别某盘符的类型,是硬盘、软盘、光盘、还是USB盘,最主要是如何实别出是否为USB盘

LXFY 2003-07-12 11:12:09
如何识别某盘符的类型,是硬盘、软盘、光盘、还是USB盘,最主要是如何实别出是否为USB盘
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishigen 2003-07-22
  • 打赏
  • 举报
回复
关注
NowCan 2003-07-22
  • 打赏
  • 举报
回复
楼上的,不行吧。
首先,U盘也有写保护的。
还有,USB的外接硬盘也是“可移动磁盘”,这怎么办?
IamReason 2003-07-22
  • 打赏
  • 举报
回复
首先判别驱动器
其次打开文件判别是否可以修改
最后看看是不是A

但这种情况下如果写保护的话还是判别不出来
还是访问wdm试试吧
zhongchengjian728 2003-07-20
  • 打赏
  • 举报
回复
好象每个类型都有自己的一个宏定义,去有关书上找就可以了!

xuii 2003-07-19
  • 打赏
  • 举报
回复
上面的这种方法只是从逻辑盘这个层次区别. 而不是物理驱动器上区别.
NowCan 2003-07-14
  • 打赏
  • 举报
回复
区别U盘与可移动硬盘?比较难。

其他的看这个程序
GetLogicalDriveStrings返回计算机里所有驱动器的盘符,放在一个缓存里,格式是A:\<NULL>B:\<NULL>....<NULL><NULL>及盘符于盘符之间有一个0,最后是两个连续的0。这在处理上有一个小技巧。
GetDriveType返回驱动器的类型,如下。
#define DRIVE_UNKNOWN 0 // 无效路径名
#define DRIVE_NO_ROOT_DIR 1 // 无效路经,如无法找到的卷标
#define DRIVE_REMOVABLE 2 // 可移动驱动器(如磁盘驱动器,光驱等,USB盘可能也是)
#define DRIVE_FIXED 3 // 固定的驱动器 (如 通常的硬盘)
#define DRIVE_REMOTE 4 // 网络驱动器
#define DRIVE_CDROM 5 // CD-ROM
#define DRIVE_RAMDISK 6 // 随机存取(RAM) 磁盘

这样程序就很容易了,先列出所有的驱动器盘符,再判断他们的类型,就可以知道计算机里光驱的驱动器盘符了。
下面这个程序列出了所有的驱动器和相应的类型。
#include <windows.h>
#include <stdio.h>

int main()
{
char Buf[128];//够了吧,有这么多驱动器?
char *p;
char *szType[]={"Unknown","Invalid directory","Removable disk","Fixed disk","Network disk","CD ROM","RAM disk"};
UINT Type;
GetLogicalDriveStrings(128,Buf);
for(p=Buf;*p;p+=lstrlen(p)+1)//最后那个加1是为了跳过中间的0,而最后有两个连续的0,所以可以结束
{
Type=GetDriveType(p);
printf("%s - %s\n",p,szType[Type]);
}
}

http://vip.6to23.com/NowCan1/tech/cd_rom.htm
AkiraChing 2003-07-13
  • 打赏
  • 举报
回复
http://www.codeproject.com/system/TDriver.asp这个程序可以读取驱动程序,看看能不能从驱动程序识别呢
晨星 2003-07-12
  • 打赏
  • 举报
回复
楼上的有道理。好像操作系统也显示不出是优盘还是移动硬盘,而统统显示为:“可移动磁盘”。
无敌魔仙 2003-07-12
  • 打赏
  • 举报
回复
好象没有肯定是USB盘,但是是 REMOVABLE 的,这样就应该可以作出判断了哦
zhouyong0371 2003-07-12
  • 打赏
  • 举报
回复
关注
zgh266 2003-07-12
  • 打赏
  • 举报
回复
UINT GetDriveType(
LPCTSTR lpRootPathName // root directory
);

Value Meaning
DRIVE_UNKNOWN The drive type cannot be determined.
DRIVE_NO_ROOT_DIR The root path is invalid. For example, no volume is mounted at the path.
DRIVE_REMOVABLE The disk can be removed from the drive.
DRIVE_FIXED The disk cannot be removed from the drive.
DRIVE_REMOTE The drive is a remote (network) drive.
DRIVE_CDROM The drive is a CD-ROM drive.
DRIVE_RAMDISK The drive is a RAM disk.
theone 2003-07-12
  • 打赏
  • 举报
回复
恩,没有办法区别U盘与可移动硬盘

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧