无忧启动论坛

标题: 本人写的一个小工具,看看是否能区分移动硬盘和本地U盘(2013-1-28更新) [打印本页]

作者: clonecd    时间: 2012-12-21 22:24
标题: 本人写的一个小工具,看看是否能区分移动硬盘和本地U盘(2013-1-28更新)
2013-1-28 更新
      
          修正遇到一些“三驱三启”的U盘会退出的BUG。


      下载:  
                DrvType-32bit.rar (7.68 KB, 下载次数: 254)   (2013-1-28)32位

                DrvType-64bit.rar (10.83 KB, 下载次数: 193)   (2013-1-28)纯64位

===================================================================


2013-1-8 更新
            

                1. 支持多个GPT磁盘,而2012-12-24版最多只能有1个GPT磁盘;

                2. 支持电脑上同时有MBR磁盘和GPT磁盘的环境。


      友情提醒:
             由于32位的WindowsXP和Win2003本身不支持GPT磁盘,所以GPT分区
             在此环境中无法分配盘符。鉴于此,本人建议,如果您电脑上有GPT磁盘,
             请在以下环境中使用此小工具:
                    WIN7或WIN8以及PE(XPE、03PE、WIN7PE、WIN8PE)
                  (以上不论32位还是64位都可以)
                 或者64位的WindowsXP和Win2003

             当然如果您的电脑上没有GPT磁盘,则没必要按上面说的来做。

             注:32位的win2003 SP1及以上支持GPT磁盘。


      下载地址:  
                DrvType.rar (7.5 KB, 下载次数: 150)   (2013-1-8)


===================================================================

2012-12-24 更新
            1. 优化代码,降低运行时内存占用,提高运行速度;

                     之前的匆匆写完,没有优化过代码;

                2. 修正当有GPT分区时多出的显示语句;

                    是本人忘了屏蔽输出语句造成的,^*_*^;

===================================================================

2012-12-23 更新
       用途:列举磁盘的容量,类型,盘符。
      


          更新:

                1. 列举磁盘的容量,以MB为单位;

                2. 增加 -a 参数,用“*”来标记活动分区;
                     必须是小写 a

                        -a    --Active partitions are marked with "*".                        
                               Here, "a" must be lowercase. It is case sensetive.

          用法:

                drvtype
               或
               drvtype -a

              如图:
                     

如果用法不正确则显示使用方法。


                       FixedHDD        表示本地硬盘
                       USBHDD          表示移动硬盘
                       USBFlash         表示U盘

2012-12-21 发布

在命令行下直接运行即可。




DrvType.rar (3.7 KB, 下载次数: 99)

大家测试看看,反馈结果。注意:磁盘序号从1开始,不是从0开始。
以上第4个为本人的读卡器,里面没东东。所以为空。

[ 本帖最后由 clonecd 于 2013-1-28 16:36 编辑 ]
作者: xiaoy    时间: 2012-12-21 22:56
很好, 测试成功
作者: clonecd    时间: 2012-12-21 23:15
原帖由 xiaoy 于 2012-12-21 22:56 发表
很好, 测试成功


多谢测试,进一步期待其他人进行更广泛地测试。
作者: jh1688    时间: 2012-12-22 07:02
可以分辩出,谢谢分享,收下了……
作者: chiannet    时间: 2012-12-22 07:36
很好, 测试成功.
作者: rtian    时间: 2012-12-22 07:46
测试成功!两个同时识别分别显示





J:盘是U盘量产的。为了测试u盘分区量产为cdrom + fixed disk了

[ 本帖最后由 rtian 于 2012-12-22 07:57 编辑 ]

捕获.PNG (3.51 KB, 下载次数: 121)

捕获.PNG

作者: chiannet    时间: 2012-12-22 07:53
clonecd您好 ,请加入一个功能:标注活跃主分区。例如做个*标示,或其它更好的方式标注。

序号        类型                 盘符列表
1        本地硬盘           C:* D:
2        U盘                  E:
3        U盘                  F:
作者: andos    时间: 2012-12-22 07:56
这些工具用英文显示会不会更好?
作者: victor888    时间: 2012-12-22 08:04
原帖由 rtian 于 2012-12-22 07:46 发表
测试成功!两个同时识别分别显示


bbs.wuyou.net/attachments/20121222_a4845d427aa7d1de36b4CtkcIT4UBTbS.png


J:盘是U盘量产的。为了测试u盘分区量产为cdrom + fixed disk了


你这个测试结果是相反的,证明楼主的工具还有BUG,因为你的J没有显示为U盘。
作者: clonecd    时间: 2012-12-22 18:09
原帖由 chiannet 于 2012-12-22 07:53 发表
clonecd您好 ,请加入一个功能:标注活跃主分区。例如做个*标示,或其它更好的方式标注。

序号        类型                 盘符列表
1        本地硬盘           C:* D:
2        U盘                   ...



已更新。
作者: victor888    时间: 2012-12-22 19:11
请问楼主,这个工具,如果分区没有盘符,且是活动的,能标识出来吗?
作者: clonecd    时间: 2012-12-22 19:15
都没有盘符了,那要怎么标呢?
我这个工具知道哪个分区是活动的,可是用什么方法标呢?
用符合GHOST的方法标吗?

[ 本帖最后由 clonecd 于 2012-12-22 19:18 编辑 ]
作者: victor888    时间: 2012-12-22 19:19
呵呵,问题确实是这样,如果没有盘符,标记也没有多少意义。
楼主能不能告诉我,您是如何区分USBHDD 和移动硬盘的?
作者: bsplin    时间: 2012-12-22 19:23
C:\>drvtype -a
No.     Type            Size(MB)         DriveList
1       FixedHDD        305250.69        C:* D: E: F:
2       USBFlash        15304.11         G:*
作者: sz_kent    时间: 2012-12-22 19:24


本地硬盘 : C  、 D
优盘        : E
移动硬盘 : F
优盘        : G 、 H


优盘 E 是没有Flash的,所以没有容量,只有盘符,但 DrvType.exe 没有显示盘符出来。
盘符顺序,也跟系统的排列不一致了。F盘 跑到最后。
作者: clonecd    时间: 2012-12-22 19:26
原帖由 victor888 于 2012-12-22 19:19 发表
呵呵,问题确实是这样,如果没有盘符,标记也没有多少意义。
楼主能不能告诉我,您是如何区分USBHDD 和移动硬盘的?


这里的USBHDD和移动硬盘是一个意思。
你是指USBFlash?
作者: clonecd    时间: 2012-12-22 19:28
原帖由 sz_kent 于 2012-12-22 19:24 发表
153336

本地硬盘 : C  、 D
优盘        : E
移动硬盘 : F
优盘        : G 、 H


优盘 E 是没有Flash的,所以没有容量,只有盘符,但 DrvType.exe 没有显示盘符出来。
盘符顺序,也跟系统的排列 ...


没有容量的不显示,我的工具新版就是这样设计的。

至于F跑到最后,是因为我是按设备接口来排序的,不是按盘符排序的,看最左边一列。


顺便说一下,我这个不是盘符理顺工具!!!

[ 本帖最后由 clonecd 于 2012-12-22 19:32 编辑 ]
作者: victor888    时间: 2012-12-22 20:39
原帖由 clonecd 于 2012-12-22 19:26 发表
这里的USBHDD和移动硬盘是一个意思。
你是指USBFlash?


我是指如何区分移动硬盘和量产为本地盘的U盘。
作者: 糊涂    时间: 2012-12-22 20:40
首先对老师表示支持!!!

老师,量产为本地磁盘的U盘,会如何显示呢?

目前还没有测试,先猜测一下

比如我有一个U盘16G,量产为两个差不多相等大小的分区做为双启使用,一个分区写入UD,一个写入U+……

QQ截图20121222204123.png (109.77 KB, 下载次数: 122)

QQ截图20121222204123.png

作者: clonecd    时间: 2012-12-22 21:05
原帖由 victor888 于 2012-12-22 20:39 发表


我是指如何区分移动硬盘和量产为本地盘的U盘。




这个目前我还没有十分确切的办法,手上的U盘一时半会我还没找到工具量产。
到时候搞一个再来找办法。我把这个工具发出来,主要是先收集信息,再找办法。

[ 本帖最后由 clonecd 于 2012-12-22 21:10 编辑 ]
作者: clonecd    时间: 2012-12-22 21:08
原帖由 2012qq185339882 于 2012-12-22 20:40 发表
首先对老师表示支持!!!

老师,量产为本地磁盘的U盘,会如何显示呢?

目前还没有测试,先猜测一下

比如我有一个U盘16G,量产为两个差不多相等大小的分区做为双启使用,一个分区写入UD,一个写入U+……


你运行一下我的工具,把结果贴上来看看。
作者: 糊涂    时间: 2012-12-22 21:28
标题: 回复 #21 clonecd 的帖子
测试结果如图......

QQ截图20121222204123.png (75.91 KB, 下载次数: 119)

QQ截图20121222204123.png

作者: 2012baimu    时间: 2012-12-22 21:35
测试了一下!

作者: chiannet    时间: 2012-12-22 22:59
拽极了!我的SETUPPE.EXE内含的是DSPtW.EXE,我用它检测盘符相关信息。

如果楼主的程序经广泛测试,我就拿来使用了。

不知楼主采用何种办法测试的?
我猜楼主可能不是用win API 的DeviceIoControl,否则程序应该难得这么苗条?
作者: clonecd    时间: 2012-12-22 23:30
原帖由 chiannet 于 2012-12-22 22:59 发表
拽极了!我的SETUPPE.EXE内含的是DSPtW.EXE,我用它检测盘符相关信息。

如果楼主的程序经广泛测试,我就拿来使用了。

不知楼主采用何种办法测试的?
我猜楼主可能不是用win API 的DeviceIoControl,否则 ...


DSPtW.EXE无法检测EISA分区的,且一个硬盘有多个主分区的话也不正确的,5、6年前我就试过了。
不过后来更新的我没试,以上如说错,纯属我臆测。

DeviceIoControl 是用了,但还有其它的。

区分本地硬盘,移动硬盘和普通U盘是没问题的。

移动硬盘和量产为本地硬盘(Fixed Disk)的U盘的区分还需要找更可靠的方法。

[ 本帖最后由 clonecd 于 2012-12-22 23:45 编辑 ]
作者: chiannet    时间: 2012-12-23 09:00
  1. function GetBusType(Drive: AnsiChar): TStorageBusType;
  2. var
  3.   H: THandle;
  4.   Query: TStoragePropertyQuery;
  5.   dwBytesReturned: DWORD;
  6.   Buffer: array [0..1023] of Byte;
  7.   sdd: TStorageDeviceDescriptor absolute Buffer;
  8.   OldMode: UINT;
  9. begin
  10.   Result := BusTypeUnknown;

  11.   OldMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  12.   try
  13.     H := CreateFile(PChar(Format('\\.\%s:', [AnsiLowerCase(Drive)])), 0, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
  14.       OPEN_EXISTING, 0, 0);
  15.     if H <> INVALID_HANDLE_VALUE then
  16.     begin
  17.       try
  18.         dwBytesReturned := 0;
  19.         FillChar(Query, SizeOf(Query), 0);
  20.         FillChar(Buffer, SizeOf(Buffer), 0);
  21.         sdd.Size := SizeOf(Buffer);
  22.         Query.PropertyId := StorageDeviceProperty;
  23.         Query.QueryType := PropertyStandardQuery;
  24.         if DeviceIoControl(H, IOCTL_STORAGE_QUERY_PROPERTY, @Query, SizeOf(Query), @Buffer, SizeOf(Buffer), dwBytesReturned, nil) then
  25.           Result := sdd.BusType;
  26.       finally
  27.         CloseHandle(H);
  28.       end;
  29.     end;
  30.   finally
  31.     SetErrorMode(OldMode);
  32.   end;
  33. end;
复制代码


if GetBusType(driver)= BusTypeUsb then begin
if (GetDriveType(pchar(driver+':\'))=DRIVE_FIXED) then  usb_hddf:=true  //这是移动硬盘
else
  if (GetDriveType(pchar(driver+':\'))=DRIVE_REMOVABLE then  usb_flash:=true;  //这是U盘
end;

[ 本帖最后由 chiannet 于 2012-12-23 09:17 编辑 ]
作者: chiannet    时间: 2012-12-23 09:01
这是delphi 源码,编译后体积庞大,比不了c
作者: chiannet    时间: 2012-12-23 09:06
可否麻烦你贴一个delphi 识别硬盘主分区、逻辑分区的完整代码?
作者: clonecd    时间: 2012-12-23 09:08
delphi 我不会啊,不过你要的代码网上应该都有吧。

其实MBR磁盘的分区,在数据结构上就是单链表啊。

[ 本帖最后由 clonecd 于 2012-12-23 09:10 编辑 ]
作者: chiannet    时间: 2012-12-23 09:12
读mbr,头大。呵呵。懒得死,只想抄一个成品。哈哈。
作者: clonecd    时间: 2012-12-23 09:22
原帖由 chiannet 于 2012-12-23 09:06 发表
可否麻烦你贴一个delphi 识别硬盘主分区、逻辑分区的完整代码?



给你来段c语言的,linux下 gcc 编译,你可以参考改成delphi的。
  1. #include <string.h>
  2. #include <unistd.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <fcntl.h>
  6. #include <linux/types.h>
  7. #pragma pack(1)   // 内存按1bit对齐,主要是为了省内存,此句不要也没关系
  8. struct partion_table //分区表结构
  9. {
  10. __u8 boot_flag;//启动类型
  11. __u8 start[3];
  12. __u8 fs_type;//分区类型
  13. __u8 end[3];
  14. __u32 sectors_before;//分区前扇区数
  15. __u32 sectors;//分区总扇区数
  16. };

  17. struct mbr    //MBR结构
  18. {
  19. __u8 boot_code[446];
  20. struct partion_table pt[4];
  21. __u8 end_sign[2];//结束标记55AA
  22. };

  23. int fd;
  24. unsigned long first_ebr_offset=0;
  25. #define sector_size 512
  26. unsigned char buf[sector_size];
  27. unsigned char tmp[32];
  28. unsigned char device[16];
  29. struct mbr *mymbr;

  30. int main(int argc,char **argv)
  31. {
  32. if (argc != 2)
  33. {
  34.   printf("Usage: %s <device>\n",argv[0]);
  35.   return 0;
  36. }
  37. //loff_t num=strtol(argv[2],NULL,10);
  38. strcpy(device,argv[1]);
  39. openfile(argv[1]);
  40. readsector(0);
  41. show_mbr();
  42. close(fd);
  43. return 0;
  44. }

  45. int openfile(unsigned char *filename) //open a device
  46. {
  47. fd=open(filename, O_RDWR); //read and write
  48. if (fd == -1) return 1;
  49. return 0;
  50. }
复制代码

[ 本帖最后由 clonecd 于 2013-1-8 22:47 编辑 ]
作者: clonecd    时间: 2012-12-23 09:26
原帖由 chiannet 于 2012-12-23 09:00 发表
function GetBusType(Drive: AnsiChar): TStorageBusType;
var
  H: THandle;
  Query: TStoragePropertyQuery;
  dwBytesReturned: DWORD;
  Buffer: array [0..1023] of Byte;
  sdd: TStorageDeviceDe ...



看了一下这个,其实我的思路跟你的是一样的。
作者: 糊涂    时间: 2012-12-23 09:30
标题: 回复 #25 clonecd 的帖子
KERNEL32.DLL msvcrt.dll   LoadLibraryA  GetProcAddress  VirtualProtect  VirtualAlloc  VirtualFree   ExitProcess...

确实是C编写

[ 本帖最后由 2012qq185339882 于 2012-12-23 09:34 编辑 ]
作者: andos    时间: 2012-12-23 09:54
现在的盘都以GB 甚至TB 起算,那么用GB显示会不会比MB更合适呢?
作者: clonecd    时间: 2012-12-23 10:14
原帖由 andos 于 2012-12-23 09:54 发表
现在的盘都以GB 甚至TB 起算,那么用GB显示会不会比MB更合适呢?


这个自己需要用到的话自己转换一下就行了。
除以1024转为GB,再除以1024转为TB。
要知道,在PE里,有的虚拟盘只有1~几十MB。
这里主要是考虑适用范围。

[ 本帖最后由 clonecd 于 2012-12-23 11:21 编辑 ]
作者: 2010hook    时间: 2012-12-23 14:51
"*" 应该位于盘符的前面才符合逻辑,如:*C:
序号应该从0开始才符合惯例!

[ 本帖最后由 2010hook 于 2012-12-23 14:52 编辑 ]
作者: clonecd    时间: 2012-12-23 20:36
原帖由 2010hook 于 2012-12-23 14:51 发表
"*" 应该位于盘符的前面才符合逻辑,如:*C:
序号应该从0开始才符合惯例!



说得不错,不过已经定下来了。
反正主要是给自动化软件或批处理使用的,他们会自己处理的。
作者: clonecd    时间: 2012-12-23 22:36
小小更新一下,+ 字数补丁。
作者: 2012得了    时间: 2012-12-24 10:05
很小巧的工具,抓下来用用看。
作者: chiannet    时间: 2012-12-31 22:18
外出了n天,现在来看看兄弟的新版程序。
作者: clonecd    时间: 2013-1-8 14:29
2013-1-8 更新
    1. 支持多个GPT磁盘,而2012-12-24版最多只能有1个GPT磁盘;

    2. 支持电脑上同时有MBR磁盘和GPT磁盘的环境。
作者: lindafu    时间: 2013-1-8 14:36
标题: 回复 #41 clonecd 的帖子
如果还能加入厂商和型号就完美了
作者: victor888    时间: 2013-1-8 18:22
希望能从MBR读DISKSIGNATURE
作者: clonecd    时间: 2013-1-8 22:20
原帖由 victor888 于 2013-1-8 18:22 发表
希望能从MBR读DISKSIGNATURE


读磁盘签名有什么用途吗?
作者: wgykk    时间: 2013-1-8 23:54
反馈一下:
当我插入我的“三驱三启”盘后,再运行程序,直接报错退出
作者: clonecd    时间: 2013-1-9 08:51
原帖由 wgykk 于 2013-1-8 23:54 发表
反馈一下:
当我插入我的“三驱三启”盘后,再运行程序,直接报错退出


终于等到有三驱三启的坛友反馈了,太感谢了。

把以下的文件解压,双击gethdinfo.bat,把得到allmbr.txt和SIZEID.txt传上来。

hdinfo.rar (17.1 KB, 下载次数: 13)           不要在WIN7和WIN7PE使用!

同时,告知三驱三启整个U盘的容量,以及此“三驱”各自的容量。不要很精确。

多谢!

[ 本帖最后由 clonecd 于 2013-1-9 09:05 编辑 ]
作者: clonecd    时间: 2013-1-9 08:58
原帖由 wgykk 于 2013-1-8 23:54 发表
反馈一下:
当我插入我的“三驱三启”盘后,再运行程序,直接报错退出


再用以下版本测试一下是否还报错。

DrvType测试.rar (7.01 KB, 下载次数: 3)
作者: andos    时间: 2013-1-9 09:46
原帖由 lindafu 于 2013-1-8 14:36 发表
如果还能加入厂商和型号就完美了

呵呵,不错的建议
显示更清晰
作者: victor888    时间: 2013-1-9 14:28
原帖由 clonecd 于 2013-1-8 22:20 发表
读磁盘签名有什么用途吗?


是为了我的盘符调整批处理,如果你的成熟了,哈哈,我就不用DSPTW了。
作者: clonecd    时间: 2013-1-9 14:58
读磁盘签名,需要增加的代码量不是很多。
不过前面两位老大要求加厂商和型号,会增加很多代码,最关键的是运行时占用内存急剧上升,以及执行速度变慢,小工具体积也会有很大增加。因为这部分代码我这个小工具本身就不带有。

而磁盘签名在MBR里,本身我的工具就要读MBR。
作者: clonecd    时间: 2013-1-9 15:00
原帖由 victor888 于 2013-1-9 14:28 发表


是为了我的盘符调整批处理,如果你的成熟了,哈哈,我就不用DSPTW了。


请教老大,如果一个硬盘有多个主分区,DSPTW获取的信息应该是错的吧?
作者: victor888    时间: 2013-1-9 15:52
这个还重来没有发现过,哈哈。
作者: clonecd    时间: 2013-1-9 17:57
原帖由 victor888 于 2013-1-9 15:52 发表
这个还重来没有发现过,哈哈。


看以下链接以及随后的几个楼层:

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=173725&page=173#pid2469654
作者: clonecd    时间: 2013-1-10 23:04
原帖由 victor888 于 2013-1-9 15:52 发表
这个还重来没有发现过,哈哈。


你要的无USB类型的版本。

DrvType.rar (7.59 KB, 下载次数: 15)
作者: victor888    时间: 2013-1-11 14:43
兄弟,那输出结果还是英文吧,中文不通用啊。
作者: clonecd    时间: 2013-1-11 15:43
原帖由 victor888 于 2013-1-11 14:43 发表
兄弟,那输出结果还是英文吧,中文不通用啊。


DrvType20120111.rar (7.66 KB, 下载次数: 16)

磁盘签名如果没有,则该项输出 unknown

[ 本帖最后由 clonecd 于 2013-1-11 16:02 编辑 ]
作者: victor888    时间: 2013-1-11 18:09
谢谢楼上,我出一版使用你的软件做出的ORDERDRV.CMD
作者: victor888    时间: 2013-1-11 19:52
我将手机连接到电脑上,电脑识别出两个盘,其中一个是内置的卡,另外一个是手机自带的存储空间,使用DRVTYPE,发现后者没有被识别出来,前者识别为USBFLASH。

我用ORDERDRV识别出为USBFLASH了。

另外,LZ,能不能为我改造一下,不识别USBFLASH了,只识别USBHDD和正常的FIXED HDD就行了,你的软件我发现运行速度很快,我准备用它替换DSPTW。

谢谢LZ.
作者: clonecd    时间: 2013-1-11 20:02
原帖由 victor888 于 2013-1-11 19:52 发表
我将手机连接到电脑上,电脑识别出两个盘,其中一个是内置的卡,另外一个是手机自带的存储空间,使用DRVTYPE,发现后者没有被识别出来,前者识别为USBFLASH。

》》麻烦在以上环境中帮我测试一下以便继续改进,测试工具等一下发,就要以上的测试环境。



原帖由 victor888 于 2013-1-11 19:52 发表
另外,LZ,能不能为我改造一下,不识别USBFLASH了,只识别USBHDD和正常的FIXED HDD就行了,你的软件我发现运行速度很快,我准备用它替换DSPTW。

》》是该USBFLASH的磁盘所有项目都不输出吗(即一行不输出)?还是仅仅不输出USBFLASH这一串字?
作者: clonecd    时间: 2013-1-11 20:13
原帖由 victor888 于 2013-1-11 19:52 发表
我将手机连接到电脑上,电脑识别出两个盘,其中一个是内置的卡,另外一个是手机自带的存储空间,使用DRVTYPE,发现后者没有被识别出来,前者识别为USBFLASH。


DTest.rar (7.16 KB, 下载次数: 14)

用以上测试,把结果贴上来。多谢了。
作者: victor888    时间: 2013-1-12 10:41
如图,如图,如图。

QQ截图20130112103933.png (7.81 KB, 下载次数: 136)

QQ截图20130112103933.png

作者: clonecd    时间: 2013-1-12 13:11
原帖由 victor888 于 2013-1-12 10:41 发表
如图,如图,如图。

多谢了,你这张卡是不是linux的文件系统或其它非Windows文件系统还是?
如果是的话,确实暂时无法判断。


此外你看在看我前面回复的楼层,要我怎么帮你修改drvtype?
作者: victor888    时间: 2013-1-12 18:46
如果没有错的话,这个空间应该是安卓系统所在。

你帮我把判断USBFLASH的语句去除,结果不显示这样的盘符。

另外,我测试发现你的显示结果里面,如何分区没有盘符,那么,结果也不会显示分区的,这符合我的要求。
作者: clonecd    时间: 2013-1-12 18:53
原帖由 victor888 于 2013-1-12 18:46 发表
如果没有错的话,这个空间应该是安卓系统所在。

你帮我把判断USBFLASH的语句去除,结果不显示这样的盘符。


>>???? 不妨给出这一行的示例。
作者: victor888    时间: 2013-1-12 18:57
比如我给出的那截图中不显示NO2、3等REMOVABLE USBFLASH类型的盘符。
作者: clonecd    时间: 2013-1-12 20:08
原帖由 victor888 于 2013-1-12 18:57 发表
比如我给出的那截图中不显示NO2、3等REMOVABLE USBFLASH类型的盘符。


仅仅不显示盘符吗?
作者: case    时间: 2013-1-12 22:29
标题: 回复 #1 clonecd 的帖子
U盘量产的光驱识别不出来,这算不算问题?

[ 本帖最后由 case 于 2013-1-12 22:34 编辑 ]

a.jpg (78.23 KB, 下载次数: 126)

a.jpg

作者: clonecd    时间: 2013-1-12 22:58
原帖由 case 于 2013-1-12 22:29 发表
U盘量产的光驱识别不出来,这算不算问题?



光驱不属于可写介质,不属于这里讨论的范围。
作者: victor888    时间: 2013-1-13 06:17
我要的是不判断更不显示USBFLASH,结果中没有这样的行。
作者: clonecd    时间: 2013-1-13 10:04
原帖由 victor888 于 2013-1-13 06:17 发表
我要的是不判断更不显示USBFLASH,结果中没有这样的行。


先发一个上来,看看你要的是不是这种效果。
DrvType20130113.rar (7.68 KB, 下载次数: 8)
作者: victor888    时间: 2013-1-13 10:26
:L :Q
兄弟,我说的话,你怎么就听不明白呢?我的想法是不判断USBFLASH是否存在,苍天啊,大地啊。

能把原代码给我吗?
作者: clonecd    时间: 2013-1-13 10:30
原帖由 victor888 于 2013-1-13 10:26 发表
:L :Q
兄弟,我说的话,你怎么就听不明白呢?我的想法是不判断USBFLASH是否存在,苍天啊,大地啊。

能把原代码给我吗?



我明白了,其实,我问了你这么多遍,你只要给个示例,我就不用猜你的意思了。
作者: clonecd    时间: 2013-1-13 10:57
原帖由 victor888 于 2013-1-13 10:26 发表
:L :Q
兄弟,我说的话,你怎么就听不明白呢?我的想法是不判断USBFLASH是否存在,苍天啊,大地啊。

能把原代码给我吗?


看看这个吧

DrvType20130113-2.rar (7.66 KB, 下载次数: 7)
作者: victor888    时间: 2013-1-13 11:10
如图,红框内的部分不要。
你的这个目前仅是不显示盘符而已,我更期望的是你不判断REMOVABLE类型的USB FLASH是否存在,也就是结果中仅给出FIXED HDD和USB HDD两种结果,别的什么都不要。OK?

aa.jpg (22.76 KB, 下载次数: 133)

aa.jpg

作者: clonecd    时间: 2013-1-13 12:27
原帖由 victor888 于 2013-1-13 11:10 发表
如图,红框内的部分不要。
你的这个目前仅是不显示盘符而已,我更期望的是你不判断REMOVABLE类型的USB FLASH是否存在,也就是结果中仅给出FIXED HDD和USB HDD两种结果,别的什么都不要。OK?



DrvType20130113-3.rar (7.64 KB, 下载次数: 3)

看看这个吧。

你的意思是仅仅输出类型为FIXEDHDD或USBHDD的行。

看看哪个合适吧。
DrvType20130113-4.rar (7.7 KB, 下载次数: 7)

[ 本帖最后由 clonecd 于 2013-1-13 13:04 编辑 ]
作者: victor888    时间: 2013-1-13 15:49
谢谢兄弟,正需要-4版本。
作者: victor888    时间: 2013-1-13 16:00
LZ, 你的软件同一磁盘的盘符顺序是主分区盘符在前啊,这有何意义呢?当然,我需要的,仅是判断活动分区的盘符和SIGNAUTURE.
作者: 无垠    时间: 2013-1-13 16:04
如图:





[ 本帖最后由 无垠 于 2013-1-13 16:05 编辑 ]
作者: clonecd    时间: 2013-1-13 16:07
原帖由 victor888 于 2013-1-13 16:00 发表
LZ, 你的软件同一磁盘的盘符顺序是主分区盘符在前啊,这有何意义呢?当然,我需要的,仅是判断活动分区的盘符和SIGNAUTURE.



按照逻辑顺序确实是这样,

如果你需要,可使用DrvType -a

然后活动分区的盘符就会有星号标记,其它的你略去即可。

DrvType20130113-5.rar (7.7 KB, 下载次数: 6)

用这个吧,修正了扩展分区中没有创建任何逻辑分区时导致的BUG。

[ 本帖最后由 clonecd 于 2013-1-13 18:02 编辑 ]
作者: clonecd    时间: 2013-1-13 16:09
原帖由 无垠 于 2013-1-13 16:04 发表
如图:

154974

154975



你这个反馈给victor888老大吧,我这个工具不理顺盘符,
只是victor888老大用我这个工具理顺盘符而已。
作者: victor888    时间: 2013-1-13 19:24
thanks cloncd.

I found that your product support disk created with DATARAM, that is fabulous.
作者: victor888    时间: 2013-1-13 19:28
不不不,小子,使用DATARAM虚拟出的内存盘,如果使用-a显示活动分区的话,则不显示其信息,不加这个参数就显示,我需要什么情况都显示的结果。
作者: clonecd    时间: 2013-1-13 21:20
原帖由 victor888 于 2013-1-13 19:28 发表
不不不,小子,使用DATARAM虚拟出的内存盘,如果使用-a显示活动分区的话,则不显示其信息,不加这个参数就显示,我需要什么情况都显示的结果。


什么情况?各截一幅图上来欣赏一下。

再把之前的DTest.exe运行结果贴上来看看。

[ 本帖最后由 clonecd 于 2013-1-13 21:23 编辑 ]
作者: victor888    时间: 2013-1-14 08:23
LZ,我发现DISK SIGNATURE没有用,可以来决断这个了。

截图,我中午发一个。
作者: clonecd    时间: 2013-1-14 09:02
原帖由 victor888 于 2013-1-14 08:23 发表
LZ,我发现DISK SIGNATURE没有用,可以来决断这个了。

截图,我中午发一个。


事实上我也不知道你用DISK SIGNATURE具体地干什么活。
作者: victor888    时间: 2013-1-14 13:06
你这软件,让我发蒙,呵呵。

如图,DATARAM虚拟出的G盘,第1-2次运行结果如图。

第3次运行,又正常了,我不懂了。

别的你不用整了,把那个DISK SIGNATURE干掉就行了,我其实要的就是速度。

[ 本帖最后由 victor888 于 2013-1-14 13:07 编辑 ]

未命名.JPG (32.25 KB, 下载次数: 125)

未命名.JPG

作者: clonecd    时间: 2013-1-14 13:19
原帖由 victor888 于 2013-1-14 13:06 发表
你这软件,让我发蒙,呵呵。

如图,DATARAM虚拟出的G盘,第1-2次运行结果如图。

第3次运行,又正常了,我不懂了。

别的你不用整了,把那个DISK SIGNATURE干掉就行了,我其实要的就是速度。

DATARAM我没用过,不过看贴图,是不是第一次运行DrvType(无参数a)时,
此虚拟盘还没就绪,也就是系统里还没刷新。

DATARAM是什么动动,能否给个链接?

[ 本帖最后由 clonecd 于 2013-1-14 13:21 编辑 ]
作者: andos    时间: 2013-1-14 13:22
标题: 回复 #87 clonecd 的帖子
DATARAM 是个RAMDISK 软件
作者: clonecd    时间: 2013-1-14 13:32
原帖由 andos 于 2013-1-14 13:22 发表
DATARAM 是个RAMDISK 软件


其实让我对此软件感兴趣的是它虚拟出来的盘的总线类型。
我整一个下来玩玩。

DrvType20130114-1.rar (7.51 KB, 下载次数: 7)

已改好。

顺便说一下,我这个软件不带系统刷新功能,
所以用DiskGenius等分区软件修改过磁盘后,需刷新系统或重启,才能确保是正确的,虽然很多情况下它也能正确获取信息。

[ 本帖最后由 clonecd 于 2013-1-14 13:36 编辑 ]
作者: victor888    时间: 2013-1-14 14:42
用上述软件又试了一下,不加A还是不显示RAMDISK盘,加了A就显示了。
作者: clonecd    时间: 2013-1-14 15:22
原帖由 victor888 于 2013-1-14 14:42 发表
用上述软件又试了一下,不加A还是不显示RAMDISK盘,加了A就显示了。



太怪异了,我查查看代码。
作者: clonecd    时间: 2013-1-14 15:31
原帖由 victor888 于 2013-1-14 14:42 发表
用上述软件又试了一下,不加A还是不显示RAMDISK盘,加了A就显示了。

看看这个版本,看了之前用DTest测的,总线类型怪异。
DrvType20130114-2.rar (7.56 KB, 下载次数: 8)

PS:这个DATARAM我搞了个4.01绿色版,结果在我的电脑上死活用不起来,
能否共享一下你的版本,PM链接给我?我实地测试一下,这样更有助于问题的解决。
谢了。

[ 本帖最后由 clonecd 于 2013-1-14 15:34 编辑 ]
作者: andos    时间: 2013-1-14 16:00
标题: 回复 #92 clonecd 的帖子
http://memory.dataram.com/__down ... Disk_v4_0_1_RC9.msi
作者: victor888    时间: 2013-1-14 16:00
链接找不到了,传上来吧,4.0.0的。

Dataram_RAMDisk_v4_0_0.part01.rar

500 KB, 下载次数: 6, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part02.rar

500 KB, 下载次数: 5, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part03.rar

500 KB, 下载次数: 6, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part04.rar

500 KB, 下载次数: 6, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part05.rar

500 KB, 下载次数: 5, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part06.rar

500 KB, 下载次数: 5, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part07.rar

500 KB, 下载次数: 5, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part08.rar

500 KB, 下载次数: 5, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part09.rar

500 KB, 下载次数: 5, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part10.rar

500 KB, 下载次数: 6, 下载积分: 无忧币 -2

Dataram_RAMDisk_v4_0_0.part11.rar

430.43 KB, 下载次数: 5, 下载积分: 无忧币 -2


作者: clonecd    时间: 2013-1-14 16:30
原帖由 victor888 于 2013-1-14 16:00 发表
链接找不到了,传上来吧,4.0.0的。

先收下再说,我先试试看。

这个果然可用。


估计是灵异事件了,我这里也是这样。

但是用编译器调试的时候,不管有没有 -a 都能正常显示。

现在说说这个软件的问题,这个软件如果启动虚拟盘后再停止此虚拟盘,那么在我的机子上需要重启系统才能再次虚拟磁盘。
而且我发现它的总线类型是飘忽不定的------是这个改写了内存的某处,导致结果不正常的。

如果DrvType跟这个DATARAM在同一磁盘时是无法运行DrvType的。也可能是这个内存软件的保护机制导致的吧。

[ 本帖最后由 clonecd 于 2013-1-14 20:56 编辑 ]
作者: clonecd    时间: 2013-1-15 12:04
原帖由 victor888 于 2013-1-14 16:00 发表
链接找不到了,传上来吧,4.0.0的。



这个问题解决了。

试试看吧。

[ 本帖最后由 clonecd 于 2013-1-15 12:10 编辑 ]

DrvType20130115.rar

7.65 KB, 下载次数: 5, 下载积分: 无忧币 -2


作者: victor888    时间: 2013-1-15 12:22
确实解决了,可是问题也来了,盘符调整是不能动虚拟内存磁盘的,能不能在你的软件中标识出是否为DATARAM磁盘?
否则,我只能对于这样的磁盘不进行盘符调整,即批处理不可用。
作者: clonecd    时间: 2013-1-15 12:51
原帖由 victor888 于 2013-1-15 12:22 发表
确实解决了,可是问题也来了,盘符调整是不能动虚拟内存磁盘的,能不能在你的软件中标识出是否为DATARAM磁盘?
否则,我只能对于这样的磁盘不进行盘符调整,即批处理不可用。


用什么符号来标?  “#”? 主要看看你处理起来是否方便。如下是否可行?

No.     Type               Size(MB)               DriveList         Remark
1      FixedHDD          305242.84             C: D: E:
2      FixedHDD          40.00                    G:                    #     
3      USBHDD           76316.59                L: I: J:


顺便说一下,这个虽然是虚拟内存盘,但是它的Drivetype是DRIVE_FIXED而不是DRIVE_RAMDISK;

# 在行的最后。同时也请你测试一下其它的虚拟磁盘是否也能标出来。

[ 本帖最后由 clonecd 于 2013-1-15 13:00 编辑 ]
作者: clonecd    时间: 2013-1-15 13:46
原帖由 victor888 于 2013-1-15 12:22 发表
确实解决了,可是问题也来了,盘符调整是不能动虚拟内存磁盘的,能不能在你的软件中标识出是否为DATARAM磁盘?
否则,我只能对于这样的磁盘不进行盘符调整,即批处理不可用。




排在序号后面,靠着序号。
DrvType20130115-2.rar (7.75 KB, 下载次数: 17)
作者: victor888    时间: 2013-1-15 15:54
楼上这样弄比较好,我试一下。




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3