能力值:
( LV12,RANK:420 )
|
-
-
2 楼
DefineDosDevice
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
多谢,我现在的问题是得不到设备名(DefineDosDevice 这个函数应该是把设备名映射为盘符),因为新分好的分区的设备名是不固定的(或者新分好的分区的名字是可以检索到的)?
|
能力值:
( LV12,RANK:420 )
|
-
-
4 楼
枚举\Device\HarddiskVolumeX
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
多谢,我是新手,请问是不是就是
挨着个的CreateFile("\Device\HarddiskVolume%d"....);
?多谢指点
|
能力值:
( LV5,RANK:70 )
|
-
-
6 楼
这种方法也可以,不过最好枚举\Device下的对象,判断是否是你需要的那个设备
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
多谢多谢,我试试去!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
const char *fmt = "\\Device\\HarddiskVolume%d";
for(size_t i = 0; i < 1000; ++i)
{
sprintf(buf, fmt, i);
printf("buf == %s\r\n",buf);
HANDLE hdl=::CreateFileA(buf,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
这里都失败啊?每个都失败,好像无法打开任何一个\\Device\\HarddiskVolume%d";啊
PS:是不是调用 NtCreateFile啊?
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
\\.\\HarddiskVolume%d";
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
对了,又出现新问题了,我现在针对的U盘等设备的分区名字不是Harddisk开头,而是DP(1)开头的啊,而且后缀不固定,例如DP(1)0-0+12,DP(1)0-0+14等等
请问又有什么办法呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
CreateFile这个也不打开啊,还是getlasterror还是3
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
搞定了,因为磁盘和分区编号是已知的,WINDOWS又为每个分区都建立了个叫partition(分区编号的)的符号链接,因此直接DefineDosDevice(DDD_RAW_TARGET_PATH, "XX:", "\\device\\harddiskX\\partitionX")就OK了
|
|
|