Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
怎么样知道硬盘上有哪几个分区或者指定的分区是在哪一个硬盘上

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

希望能得到这样的结果  
 
磁盘  1  的分区  1  :  C  
磁盘  1  的分区  2  :  D  
磁盘  1  的分区  3  :  E  
磁盘  1  的分区  4  :  F  
磁盘  2  的分区  1  :  G  
磁盘  2  的分区  2  :  I  
磁盘  2  的分区  3  :  J  
磁盘  2  的分区  4  :  K  
 
---------------------------------------------------------------   
就是这样了,GetVolumeInfo('C').DiskNumber结果就是所在的物理磁盘ID  
 
需要JEDI的Win32支持库才能编译!  
 
function  GetVolumeInfo(DriverLetter:  Char):  TDiskExtent;  
var  
   hVolume:  THandle;  
   DiskExtents:  PVolumeDiskExtents;  
   dwOutBytes:  Cardinal;  
begin  
   with  Result  do  
       begin  
           DiskNumber  :=  0;  
           StartingOffset.QuadPart  :=  0;  
           ExtentLength.QuadPart  :=  0;  
       end;  
   hVolume  :=  CreateFile(PChar('\\.\'+DriverLetter+':'),  GENERIC_READ  or  GENERIC_WRITE,  
                                                 FILE_SHARE_READ  or  FILE_SHARE_WRITE,  nil,  OPEN_EXISTING,  0,  0);  
   if  hVolume  <  1  then  Exit;  
   DiskExtents  :=  AllocMem(Max_Path);  
   if  DeviceIoControl(hVolume,  
                               IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,  
                               nil,  0,  
                               DiskExtents,  Max_Path,  
                               dwOutBytes,  nil)  then  
         begin  
             if  DiskExtents^.NumberOfDiskExtents  >  0  then  
                   Result  :=  DiskExtents^.Extents[0];  
         end;  
   FreeMem(DiskExtents);  
   CloseHandle(hVolume);  
end;  
  
http://lysoft.7u7.net


相关文章

相关软件