怎么样知道硬盘上有哪几个分区或者指定的分区是在哪一个硬盘上

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

希望能得到这样的结果

磁盘 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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有