/* * rename to demo.c and compile under cygwin as * * i686-w64-mingw32-gcc demo.c -lVirtDisk */ #define _WIN32_WINNT 0x601 #define INITGUID #include #include #include #include #define VHDPATH L"D:\\test.vhd" int main (void) { VIRTUAL_STORAGE_TYPE vst; HANDLE hVhd; ATTACH_VIRTUAL_DISK_PARAMETERS params; DWORD rc; vst.DeviceId = VIRTUAL_STORAGE_TYPE_DEVICE_VHD; vst.VendorId = VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT; rc = OpenVirtualDisk ( &vst, VHDPATH, (VIRTUAL_DISK_ACCESS_MASK) (VIRTUAL_DISK_ACCESS_ATTACH_RW | VIRTUAL_DISK_ACCESS_DETACH), OPEN_VIRTUAL_DISK_FLAG_NONE, NULL, &hVhd ); if (rc != ERROR_SUCCESS) { fwprintf (stderr, L"OpenVirtualDisk() failed, rc = %lu\n", rc); return 10; } params.Version = ATTACH_VIRTUAL_DISK_VERSION_1; rc = AttachVirtualDisk ( hVhd, NULL, (ATTACH_VIRTUAL_DISK_FLAG)(ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER | ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME), 0, ¶ms, NULL ); if (rc != ERROR_SUCCESS) { fwprintf (stderr, L"AttachVirtualDisk() failed, rc = %lu\n", rc); return 10; } wprintf (L"OK!\n"); return 0; }