public static IntPtr Open(String Path) { IntPtr Handle = IntPtr.Zero; try { /* * DeviceID VHD * VendorID VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT */ var StorageType = new STORAGE_TYPE(); StorageType.DeviceID = 2; StorageType.VendorID = new Guid("EC984AEC-A0F9-47e9-901F-71415A66345B"); var Parameters = new OPEN_PARAMETERS(); Parameters.Version = DISK_VERSION.VERSION_1; Parameters.Version1.RWDepth = 1; int Result = OpenVirtualDisk(ref StorageType, Path, ACCESS_MASK.ACCESS_ALL, OPEN_FLAG.NONE, ref Parameters, ref Handle); if (Result != 0) { throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Error {0}.", Result)); } } catch (Exception e) { Console.WriteLine("Exception: {0}\n{1}", e.Message, e.StackTrace); } return(Handle); }
public static extern Int32 OpenVirtualDisk(ref STORAGE_TYPE Type, String File, ACCESS_MASK Mask, OPEN_FLAG Flag, ref OPEN_PARAMETERS Parameters, ref IntPtr Handle);