Example #1
0
        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);
        }
Example #2
0
 public static extern Int32 OpenVirtualDisk(ref STORAGE_TYPE Type, String File, ACCESS_MASK Mask, OPEN_FLAG Flag, ref OPEN_PARAMETERS Parameters, ref IntPtr Handle);