阅读:1806回复:5
驱动中如何判断盘符的类型呀?
驱动中已经得到了盘符,用什么函数可以判断该盘符的类型?dist还是romove之类的,谢谢
|
|
沙发#
发布于:2005-05-30 18:58
关注:)
|
|
板凳#
发布于:2005-06-06 10:54
Terrorist
您是如何取得盘符的,我们好多人只能在引导的短时间取得盘符,您给大家介绍一下好吗? |
|
|
地板#
发布于:2005-06-18 09:30
驱动中已经得到了盘符,用什么函数可以判断该盘符的类型?dist还是romove之类的,谢谢 我是应用层解析时才做的这个判断动作。 U盘用getdrivetype也会是DRIVE_FIXED,因此需要额外判断。 _stprintf( name, _T(\"%c:\\\\\"), \'f\'); switch ( GetDriveType(name) ) { // We don\'t like these: remove them case 0: // The drive type cannot be determined. case 1: // The root directory does not exist. printf(_T(\"Unkown:\")); break; case DRIVE_REMOVABLE: // The drive can be removed from the drive. printf(_T(\"removable:\")); break; // We like these types case DRIVE_CDROM: // The drive is a CD-ROM drive. printf(_T(\"cdrom:\")); break; case DRIVE_FIXED: // The disk cannot be removed from the drive. if(IsDriveUDisk(\'f\')) { printf(_T(\"udisk:\")); } else { printf(_T(\"fixed:\")); } break; case DRIVE_REMOTE: // The drive is a remote (network) drive. // 映射的盘符 printf(_T(\"remote:\")); break; case DRIVE_RAMDISK: // The drive is a RAM disk. printf(_T(\"ramdisk:\")); break; default: printf(_T(\"Unkown:\")); break; } BOOL IsDriveUDisk(char letter) { TCHAR name[20]; HANDLE hFile; DWORD nb; UCHAR in[1024]; UCHAR out[1024]; STORAGE_PROPERTY_QUERY *pQuery; STORAGE_DEVICE_DESCRIPTOR *pDeviceDesc; _stprintf( name, _T(\"\\\\\\\\.\\\\%c:\"), letter); hFile = CreateFile(name, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hFile == INVALID_HANDLE_VALUE) return FALSE; pQuery = (STORAGE_PROPERTY_QUERY *)in; pQuery->PropertyId = StorageDeviceProperty; pQuery->QueryType = PropertyStandardQuery; // 发送 IOCTL_STORAGE_QUERY_PROPERTY 即可得到是否为 USB HD if( DeviceIoControl(hFile, IOCTL_STORAGE_QUERY_PROPERTY, in, 1024, out, 1024, &nb, NULL) ) { pDeviceDesc = (STORAGE_DEVICE_DESCRIPTOR *)out; if(pDeviceDesc->BusType == BusTypeUsb) { CloseHandle(hFile); return TRUE; } } CloseHandle(hFile); return FALSE; } |
|
地下室#
发布于:2005-06-18 09:32
Terrorist 你是用SFILTER么? 感觉还是传到应用层来解析更方便一些。正在试。 |
|
5楼#
发布于:2005-06-18 10:06
[quote]Terrorist 你是用SFILTER么? 感觉还是传到应用层来解析更方便一些。正在试。 [/quote] yunyanrong: 我是用SFILTER;我也正在试,待有结果时我们交流一下好吗? lgh@mobileelife.com |
|
|