delphi如何读优盘

解决方案 »

  1.   

    一、 用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中
    二、Win2k以上操作系统读写磁盘主要是通过
    CreateFile,ReadFile,WriteFile,CloseHandle,SetFilePointer几个函数。
    把磁盘设备当作文件打开进行读写。
    例如
    h:=CreateFile('\\.\C:',GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
    就是打开逻辑盘C.
    h:=CreateFile('\\.\PHYSICALDRIVE0',GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
    就是读第一块物理硬盘(可以操作分区表的呦).
    拦截这几个API就可以监视NT,2k,XP的磁盘操作。
    Win9X中是通过VXD的DeviceIoControl函数来读写磁盘设备的。好像麻烦一些。
    h:=CreateFile('\\\\.\\VWIN32',0,0,0,0,FILE_FLAG_DELETE_ON_CLOSE,0);
    通过虚拟中断来读写。
    我还没想好如何监视Win9X的磁盘操作