我使用 Windows 磁盘管理管理单元来创建、初始化和格式化一些虚拟硬盘 (VHD)。我可以轻松地手动附加和访问这些 VHD,但我无法通过 API 管理它们。
在附加虚拟磁盘后,我找不到一种简单的方法来确定虚拟磁盘卷的驱动器号。我找到了以下方法,但它似乎很复杂。有没有更好的办法?
这是我到目前为止所拥有的......它并不多。
var
StorageType: TVirtualStorageType;
Path: UnicodeString;
Handle: THandle;
begin
StorageType.DeviceId := VIRTUAL_STORAGE_TYPE_DEVICE_VHD;
StorageType.VendorId := VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT;
Path := 'C:\tmp\small-usb.vhd';
OpenVirtualDisk(@StorageType, PWideChar(Path), VIRTUAL_DISK_ACCESS_ALL, OPEN_VIRTUAL_DISK_FLAG_NONE, nil, @Handle);
AttachVirtualDisk(Handle, nil, ATTACH_VIRTUAL_DISK_FLAG_NONE, 0, nil, nil);
// volume is visible in windows explorer at this point but
// I don't know the drive letter
end