[C++] 纯文本查看 复制代码 您需要修改的是CreateVirtualDisk函数,而不是AttachVirtualDisk函数。下面是一个修改后的CreateVirtualDisk函数的示例代码:
#include <Windows.h>
#include <Winioctl.h>
#include <virtdisk.h>
#include <iostream>
#pragma comment(lib, "virtdisk.lib")
int main() {
CREATE_VIRTUAL_DISK_PARAMETERS params = {};
params.Version = CREATE_VIRTUAL_DISK_VERSION_1;
params.Version1.UniqueId = {0};
params.Version1.MaximumSize = 1024L * 1024L * 1024L; // 1GB
params.Version1.BlockSizeInBytes = 512L;
params.Version1.SectorSizeInBytes = 512L;
params.Version1.PhysicalSectorSizeInBytes = 512L;
params.Version1.OpenFlags = VIRTUAL_DISK_ACCESS_NONE;
WCHAR path[MAX_PATH] = L"C:\\test.vhdx";
VIRTUAL_STORAGE_TYPE storageType = {VHD_FORMAT::VHD_FORMAT_VHDX, VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT};
HANDLE handle = INVALID_HANDLE_VALUE;
HRESULT result = CreateVirtualDisk(&storageType, path, VIRTUAL_DISK_ACCESS_NONE, nullptr, CREATE_VIRTUAL_DISK_FLAG_FULL_PHYSICAL_ALLOCATION, 0, ¶ms, nullptr, &handle);
if (result != ERROR_SUCCESS) {
std::cerr << "Failed to create virtual disk: " << result << std::endl;
return 1;
}
std::cout << "Virtual disk created successfully!" << std::endl;
CloseHandle(handle);
return 0;
}
这个示例代码使用了CreateVirtualDisk函数创建了一个1GB的虚拟硬盘文件,并将其存储在C盘根目录下的test.vhdx文件中。可以根据实际需求修改路径和大小等参数。需要注意的是,需要在程序中包含virtdisk.h头文件,并链接virtdisk.lib库文件。 |