20楼#
发布于:2004-10-29 10:43
没有呀!
我在文件驱动中这样判别的: if(DeviceObject->DeviceType == FILE_DEVICE_DISK)//可以识别磁盘,但是他把U盘A盘都作为磁盘了。 if(DeviceObject->Characteristics == FILE_FLOPPY_DISKETTE)//我想这句可以识别A盘了,但是事实上不行。 谁可以指点一下! |
|
|
21楼#
发布于:2004-10-29 13:35
其实你在应用层去判断,然后再通知驱动,不可以吗?
|
|
22楼#
发布于:2004-11-01 10:56
其实你在应用层去判断,然后再通知驱动,不可以吗? class FloppyDisk的filter |
|
|
23楼#
发布于:2004-11-01 14:54
class FloppyDisk的filter 如何得到class FloppyDisk设备的Device Object Name,也就是IoAttachDevice中要用到的 |
|
|
24楼#
发布于:2004-11-02 13:32
[quote] class FloppyDisk的filter 如何得到class FloppyDisk设备的Device Object Name,也就是IoAttachDevice中要用到的 [/quote] 利用file system device 的vdo->vbp得到ftdisk vdo-->vbp得到flopy vdo->drivername得到驱动名称 |
|
|
25楼#
发布于:2004-11-24 14:37
U盘和移动硬盘可以通过应用程序判断,先取到盘符,再根据盘符
取得此盘符所在的位置,是USB口的就是移动硬盘了 |
|
26楼#
发布于:2004-11-24 14:39
当然要先判断一下是否为 可移动设备,如不是再做上面判断
|
|
27楼#
发布于:2004-11-24 14:48
楼主能否把代码贴出来给大家看看,偶也在做这个东西
|
|
28楼#
发布于:2004-11-25 11:43
能否给再些提示。
楼主可以联系一下吗? QQ:19329682 dj_ukyo@sohu.com |
|
29楼#
发布于:2004-11-25 13:04
不好意思,最近一直在外地出差,等回来把代码放上来
|
|
30楼#
发布于:2004-11-25 13:43
感谢、感谢
|
|
31楼#
发布于:2004-11-29 14:47
好贴顶一下。
|
|
32楼#
发布于:2004-12-04 09:59
好贴,大家关注啊!
|
|
33楼#
发布于:2004-12-06 10:12
long GetBusType(char disk)
{ CHAR szDriveName[MAX_PATH]; sprintf (szDriveName,"\\\\.\\%c:", disk); HANDLE hDevice; hDevice = CreateFile (szDriveName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if (hDevice == INVALID_HANDLE_VALUE) { return -1; } else { DWORD dwBytesReturned, dwRetCode; int buf_size = 4096; char buf[4096]; STORAGE_PROPERTY_QUERY query; memset ((void *)&query, 0, sizeof (query)); query.PropertyId = StorageDeviceProperty; query.QueryType = PropertyStandardQuery; dwRetCode = DeviceIoControl (hDevice, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof (query), (STORAGE_DEVICE_DESCRIPTOR *) buf, buf_size, &dwBytesReturned, NULL); if(!dwRetCode) { CloseHandle (hDevice); return -1; } STORAGE_DEVICE_DESCRIPTOR *info= (STORAGE_DEVICE_DESCRIPTOR *)buf; CloseHandle (hDevice); return info->BusType; } } void test() { int iType = GetDriveType("C:\\"); switch( iType ) { case 0: case 1: break; case DRIVE_REMOVABLE: //这儿是USB break; case DRIVE_CDROM: break; case DRIVE_FIXED: long lBusType = GetBusType('C'); if(lBusType != BusTypeUsb) { //这儿是硬盘分区 } else { //这儿是移动硬盘分区 } break; case DRIVE_REMOTE: break; case DRIVE_RAMDISK: break; } } |
|
34楼#
发布于:2004-12-06 14:17
有完整的吗?
|
|
35楼#
发布于:2004-12-06 16:14
写个程序调用test()函数,应该不会出问题的
|
|
36楼#
发布于:2010-01-21 17:27
能不能有谁汇总一下,给个完整的,谢谢~~
|
|
37楼#
发布于:2010-04-24 07:28
为什么学了C语言后还不懂以上代码呢?ysz_00帮忙解释下那段代码
|
|
上一页
下一页