程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 怎麼樣知道硬盤上有哪幾個分區或者指定的分區是在哪一個硬盤上

怎麼樣知道硬盤上有哪幾個分區或者指定的分區是在哪一個硬盤上

編輯:Delphi
希望能得到這樣的結果  
   
  磁盤  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;  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved