阅读:1459回复:7
关于识别U盘,A盘的问题 80分
前提,在文件驱动下
deviceObject中的DeviceType可以判别光驱和磁盘, 但是他把A盘、U盘都视同为磁盘。就是说,使用DeviceType根本识别不了当前访问的是A盘、U盘还是磁盘! 如下 deviceObject-〉DeviceType = FILE_DEVICE_CD_ROM deviceObject-〉DeviceType = FILE_DEVICE_CD_ROM_FILE_SYSTEM deviceObject-〉DeviceType = FILE_DEVICE_DISK deviceObject-〉DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM。 但是我发现deviceObject的characteristics中有这些标志 FILE_FLOPPY_DISKETTE FILE_REMOVEABLE_MEDIA 请问我可以使用这里的标志来判别当前访问的是A盘、U盘吗 |
|
|
沙发#
发布于:2004-10-28 15:55
期待中。。。。。。
|
|
|
板凳#
发布于:2004-10-28 16:59
自己试一下好了。
|
|
|
地板#
发布于:2004-10-29 10:04
前提,在文件驱动下 FILE_REMOVEABLE_MEDIA应该可以区别U盘和软盘,但不能区别光盘,因为在XP系统中CDROM具有FILE_REMOVEABLE_MEDIA标志,但他不是FILE_DEVICE_DISK的,另外这个区别不是很准确,因为在通常情况下是这样的,举例说,对CDROM的Filter,Device Type你可以是UNKNOW的(当然也可以是其他,甚至是MOUSE等)所以这个只能作为一般判断标准,如果写代码这样去判断有可能有问题(我是说其他人故意将自己的FILE DISK的DeviceType作成其它的也不是不可能) |
|
|
地下室#
发布于:2004-10-30 15:53
FILE_REMOVEABLE_MEDIA应该可以区别U盘和软盘,但不能区别光盘,因为在XP系统中CDROM具有FILE_REMOVEABLE_MEDIA标志,但他不是FILE_DEVICE_DISK的,另外这个区别不是很准确,因为在通常情况下是这样的,举例说,对CDROM的Filter,Device Type你可以是UNKNOW的(当然也可以是其他,甚至是MOUSE等)所以这个只能作为一般判断标准,如果写代码这样去判断有可能有问题(我是说其他人故意将自己的FILE DISK的DeviceType作成其它的也不是不可能) AllenZh 说的有道理,不过我们只是考虑通常情况下,如果有人故意那么做,不让你找到,我们也没办法 |
|
|
5楼#
发布于:2004-10-31 14:51
currentIrpStack-DedviceObject->characteristics = FILE_FLOPPY_DISKETTE
|
|
6楼#
发布于:2004-11-02 19:39
currentIrpStack-DedviceObject->characteristics = FILE_FLOPPY_DISKETTE 这样可以吗. 我想判断DedviceObject->characteristics 是否 FILE_REMOVEABLE_MEDIA 该怎么判断. 我用 if(.....->Characteristics & FILE_REMOVABLE_MEDIA ){ DbgPrint(("this device is removiable")); } 没反应呀. |
|
7楼#
发布于:2004-11-02 20:15
测试看看吧,实践是检验真理的唯一标准
|
|
|