我机器上有两个固定的硬盘,一个移动硬盘,一个U盘,我想读取他们的信息,
这些信息就是计算机“设备管理器”中树型结构“磁盘驱动器”下的信息

ST380011A(是固定硬盘的)
ST380011B(是固定硬盘的)
IBM-DJSA -210 USB Device(移动硬盘)
AMEGA BLACK_BOX_ F1/F1 USB Device(U盘)我已经通过读注册表把“固定磁盘”的信息读取出来了,还有“光盘信息(含虚拟光盘)”也通过读注册表信息,但是USB口上的移动性磁盘没有读取出来,小弟想破头了,还是没有法子读,也不知道到哪里去取数据,还有上面已经读取来得数据,不知诸位还有其它法子读取,给小弟提个醒吧,谢谢!

解决方案 »

  1.   

    可以试试GetDriverType这个函数。主要功能是指定一个盘符,返回这个盘符是软盘、可移
    动盘、硬盘、光盘等信息,具体如何使用请看帮助 
      

  2.   

    DevicoIOControl获取驱动器信息
    再有SetUpAPI来获取系统设备足够了_____________________
    http://lysoft.7u7.net
      

  3.   

    好的,给你提个醒,
    转贴,请参考:type
      MIDPtr = ^MIDRec;
      MIDRec = Record
        InfoLevel: word;
        SerialNum: LongInt;
        VolLabel: Packed Array [0..10] of Char;
        FileSysType: Packed Array [0..7] of Char;
      end;function GetDriveSerialNum(MID: MIDPtr; drive: Word): Boolean; assembler;
    asm
      push  DS    { Just for safety, I dont think its really needed }
      mov   ax,440Dh { Function Get Media ID }
      mov   bx,drive    { drive no (0-Default, 1-A ...) } 
      mov   cx,0866h  { category and minor code }
      lds   dx,MID      { Load pointeraddr. } 
      call  DOS3Call   { Supposed to be faster than INT 21H } 
      jc    @@err 
      mov   al,1           { No carry so return TRUE } 
      jmp   @@ok
     @@err:
      mov   al,0           { Carry set so return FALSE }
     @@ok:
      pop   DS            { Restore DS, were not supposed to change it }
    end;procedure TForm1.NrBtnClick(Sender: TObject);
    var
      Info: MIDRec;
    begin
      Info.InfoLevel:=0; { Information Level }
      If GetDriveSerialNum(@Info,0) then  { Do something with it... }
        ListBox.Items.Add(IntToStr(Info.SerialNum)+' '+Info.VolLabel);
    end;
      

  4.   

    GetDriverType这个API我知道啊!并不能取得移动磁盘的信息。
    此函数我试过了,移动硬盘的盘符用此函数读出来的是“固定磁盘驱动器”
      

  5.   

    to  ly_liuyang(Liu Yang) 
    阁下能否说得明白一些啊!
      

  6.   

    to  konhon(优华)
    我要得到是磁盘驱动器整块的标识,不是要分区的标识!