GetDriveType函数获取磁盘信息 
  Lbl_DriveType:Tlabel;
  DriveType:WORD; //定义驱动器类型变量
  DriveType:=GetDriveType(RootPathName); //获得RootPathName所对应的磁盘驱动器信息
  case DriveType of
  DRIVE_REMOVABLE:Lbl_DriveType.Caption:= '软盘驱动器';
  DRIVE_FIXED : Lbl_DriveType.Caption:= '硬盘驱动器';
  DRIVE_REMOTE: Lbl_DriveType.Caption:= '网络驱动器';
  DRIVE_CDROM: Lbl_DriveType.Caption:= '光盘驱动器';
  DRIVE_RAMDISK: Lbl_DriveType.Caption:= '内存虚拟盘';
  end; //将该磁盘信息显示在Lbl_DriveType中

解决方案 »

  1.   

    呵呵DeviceIoControl才可以获得你要的结果!
    代码Google上找了,基本是VC版的http://lysoft.7u7.net
      

  2.   

    RootPathName 不知道你是如何设置的,其格式应该是:
    盘符+':\',比如 C:\、D:\、...
      

  3.   

    TO ly_liuyang(Liu Yang):能不能给得详细一点TO  lynmison(菻梓) :这个我知道,我是用的你说的那个
      

  4.   

    http://dev.csdn.net/develop/article/17/17209.shtm
      

  5.   

    :)
    上面的地址就是VC版了,自己修改为Delphi版了http://lysoft.7u7.net
      

  6.   

    IOCTL_DISK_GET_DRIVE_GEOMETRY,IOCTL_STORAGE_GET_MEDIA_TYPES_EX这些东西在D中都没有,在MSDN中也没有详细的解说呀,我怎么用
      

  7.   

    告诉你Tips了const
    // SMART IOCTL commands
    DFP_GET_VERSION        = $00074080;
    DFP_SEND_DRIVE_COMMAND = $0007c084;
    DFP_RECEIVE_DRIVE_DATA = $0007c088;const
    IOCTL_STORAGE_BASE = FILE_DEVICE_MASS_STORAGE;
    IOCTL_SCSI_BASE    = FILE_DEVICE_CONTROLLER;// Define the method codes for how buffers are passed for I/O and FS controls
    METHOD_BUFFERED   = 0;
    METHOD_IN_DIRECT  = 1;
    METHOD_OUT_DIRECT = 2;
    METHOD_NEITHER    = 3;// Define the access check value for any access
      FILE_ANY_ACCESS     = 0;
      FILE_SPECIAL_ACCESS = FILE_ANY_ACCESS;
      FILE_READ_ACCESS    = $0001; // file & pipe
      FILE_WRITE_ACCESS   = $0002; // file & pipe
    //#define IOCTL_STORAGE_GET_MEDIA_TYPES  CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_STORAGE_GET_MEDIA_TYPES = (IOCTL_STORAGE_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0300 shl 2) or (METHOD_BUFFERED);//#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_STORAGE_GET_MEDIA_TYPES_EX = (IOCTL_STORAGE_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0301 shl 2) or (METHOD_BUFFERED);//#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_STORAGE_GET_DEVICE_NUMBER = (IOCTL_STORAGE_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0420 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_PASS_THROUGH         CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    IOCTL_SCSI_PASS_THROUGH = (IOCTL_SCSI_BASE shl 16) or ((FILE_READ_ACCESS or FILE_WRITE_ACCESS) shl 14) or ($0401 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_MINIPORT             CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    IOCTL_SCSI_MINIPORT = (IOCTL_SCSI_BASE shl 16) or ((FILE_READ_ACCESS or FILE_WRITE_ACCESS) shl 14) or ($0402 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_GET_INQUIRY_DATA     CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_SCSI_GET_INQUIRY_DATA = (IOCTL_SCSI_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0403 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_GET_CAPABILITIES     CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_SCSI_GET_CAPABILITIES = (IOCTL_SCSI_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0404 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_PASS_THROUGH_DIRECT  CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    IOCTL_SCSI_PASS_THROUGH_DIRECT = (IOCTL_SCSI_BASE shl 16) or ((FILE_READ_ACCESS or FILE_WRITE_ACCESS) shl 14) or ($0405 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_GET_ADDRESS          CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_SCSI_GET_ADDRESS = (IOCTL_SCSI_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0406 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_RESCAN_BUS           CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_SCSI_RESCAN_BUS = (IOCTL_SCSI_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0407 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_GET_DUMP_POINTERS    CTL_CODE(IOCTL_SCSI_BASE, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_SCSI_GET_DUMP_POINTERS = (IOCTL_SCSI_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0408 shl 2) or (METHOD_BUFFERED);//#define IOCTL_SCSI_FREE_DUMP_POINTERS   CTL_CODE(IOCTL_SCSI_BASE, 0x0409, METHOD_BUFFERED, FILE_ANY_ACCESS)
    IOCTL_SCSI_GET_FREE_DUMP_POINTERS = (IOCTL_SCSI_BASE shl 16) or (FILE_ANY_ACCESS shl 14) or ($0409 shl 2) or (METHOD_BUFFERED);//#define IOCTL_IDE_PASS_THROUGH          CTL_CODE(IOCTL_SCSI_BASE, 0x040a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
    IOCTL_IDE_PASS_THROUGH = (IOCTL_SCSI_BASE shl 16) or ((FILE_READ_ACCESS or FILE_WRITE_ACCESS) shl 14) or ($040a shl 2) or (METHOD_BUFFERED);都该给分了吧?http://lysoft.7u7.net
      

  8.   

    再有const
    FILE_DEVICE_BEEP                = $00000001;
    FILE_DEVICE_CD_ROM              = $00000002;
    FILE_DEVICE_CD_ROM_FILE_SYSTEM  = $00000003;
    FILE_DEVICE_CONTROLLER          = $00000004;
    FILE_DEVICE_DATALINK            = $00000005;
    FILE_DEVICE_DFS                 = $00000006;
    FILE_DEVICE_DISK                = $00000007;
    FILE_DEVICE_DISK_FILE_SYSTEM    = $00000008;
    FILE_DEVICE_FILE_SYSTEM         = $00000009;
    FILE_DEVICE_INPORT_PORT         = $0000000a;
    FILE_DEVICE_KEYBOARD            = $0000000b;
    FILE_DEVICE_MAILSLOT            = $0000000c;
    FILE_DEVICE_MIDI_IN             = $0000000d;
    FILE_DEVICE_MIDI_OUT            = $0000000e;
    FILE_DEVICE_MOUSE               = $0000000f;
    FILE_DEVICE_MULTI_UNC_PROVIDER  = $00000010;
    FILE_DEVICE_NAMED_PIPE          = $00000011;
    FILE_DEVICE_NETWORK             = $00000012;
    FILE_DEVICE_NETWORK_BROWSER     = $00000013;
    FILE_DEVICE_NETWORK_FILE_SYSTEM = $00000014;
    FILE_DEVICE_NULL                = $00000015;
    FILE_DEVICE_PARALLEL_PORT       = $00000016;
    FILE_DEVICE_PHYSICAL_NETCARD    = $00000017;
    FILE_DEVICE_PRINTER             = $00000018;
    FILE_DEVICE_SCANNER             = $00000019;
    FILE_DEVICE_SERIAL_MOUSE_PORT   = $0000001a;
    FILE_DEVICE_SERIAL_PORT         = $0000001b;
    FILE_DEVICE_SCREEN              = $0000001c;
    FILE_DEVICE_SOUND               = $0000001d;
    FILE_DEVICE_STREAMS             = $0000001e;
    FILE_DEVICE_TAPE                = $0000001f;
    FILE_DEVICE_TAPE_FILE_SYSTEM    = $00000020;
    FILE_DEVICE_TRANSPORT           = $00000021;
    FILE_DEVICE_UNKNOWN             = $00000022;
    FILE_DEVICE_VIDEO               = $00000023;
    FILE_DEVICE_VIRTUAL_DISK        = $00000024;
    FILE_DEVICE_WAVE_IN             = $00000025;
    FILE_DEVICE_WAVE_OUT            = $00000026;
    FILE_DEVICE_8042_PORT           = $00000027;
    FILE_DEVICE_NETWORK_REDIRECTOR  = $00000028;
    FILE_DEVICE_BATTERY             = $00000029;
    FILE_DEVICE_BUS_EXTENDER        = $0000002a;
    FILE_DEVICE_MODEM               = $0000002b;
    FILE_DEVICE_VDM                 = $0000002c;
    FILE_DEVICE_MASS_STORAGE        = $0000002d;
    FILE_DEVICE_SMB                 = $0000002e;
    FILE_DEVICE_KS                  = $0000002f;
    FILE_DEVICE_CHANGER             = $00000030;
    FILE_DEVICE_SMARTCARD           = $00000031;
    FILE_DEVICE_ACPI                = $00000032;
    FILE_DEVICE_DVD                 = $00000033;
    FILE_DEVICE_FULLSCREEN_VIDEO    = $00000034;
    FILE_DEVICE_DFS_FILE_SYSTEM     = $00000035;
    FILE_DEVICE_DFS_VOLUME          = $00000036;
    FILE_DEVICE_SERENUM             = $00000037;
    FILE_DEVICE_TERMSRV             = $00000038;
    FILE_DEVICE_KSEC                = $00000039;
    足够了:)http://lysoft.7u7.net
      

  9.   

    呵呵,这些都是winioctl.h中的东西