Пример #1
0
        private static void GetResult(IntPtr jobHandle, VixError ignore = VixError.VIX_OK)
        {
            VixError err = VixJob_Wait(jobHandle, VixPropertyID.VIX_PROPERTY_NONE);

            CloseHandle(ref jobHandle);
            CheckError(err, ignore);
        }
Пример #2
0
 private static void CheckError(VixError err, VixError ignore = VixError.VIX_OK)
 {
     if (err != VixError.VIX_OK && err != ignore)
     {
         throw new VMwareException(err);
     }
 }
Пример #3
0
        public override int Read(byte[] destBuffer, int offset, int count)
        {
            if (offset % 512 != 0 || count % 512 != 0)
            {
                throw new Exception("Offset and Count must be multiples of 512");
            }
            if (destBuffer.Length < count - offset)
            {
                throw new Exception("Buffer too small! must be >=" + (count - offset) + ", but is " + destBuffer.Length);
            }
            VixError error = VixDiskLib.Read(diskPtr, (ulong)offset / 512, (ulong)count / 512, destBuffer);

            if (error == VixError.VIX_OK)
            {
                return(count);
            }
            else if (error == VixError.VIX_E_DISK_OUTOFRANGE)
            {
                return(0);
            }
            else
            {
                throw new Exception("Error reading VM disk : " + error.ToString());
            }
        }
Пример #4
0
        private static IntPtr GetSnapshot(IntPtr vmHandle, int index)
        {
            IntPtr snapshotHandle = IntPtr.Zero;

            VixError err = VixVM_GetRootSnapshot(vmHandle, index, ref snapshotHandle);

            CheckError(err);

            return(snapshotHandle);
        }
Пример #5
0
        private static IntPtr GetSnapshot(IntPtr vmHandle, string name)
        {
            IntPtr snapshotHandle = IntPtr.Zero;

            VixError err = VixVM_GetNamedSnapshot(vmHandle, name, ref snapshotHandle);

            CheckError(err);

            return(snapshotHandle);
        }
Пример #6
0
        private static IntPtr GetResultHandle(IntPtr jobHandle)
        {
            IntPtr resultHandle = VixInvalidHandle;

            VixError err = VixJob_Wait(
                jobHandle,
                VixPropertyID.VIX_PROPERTY_JOB_RESULT_HANDLE,
                ref resultHandle,
                VixPropertyID.VIX_PROPERTY_NONE);

            CloseHandle(ref jobHandle);

            CheckError(err);

            return(resultHandle);
        }
Пример #7
0
        private static void VixDiscoveryProc(IntPtr jobHandle, VixEventType eventType, IntPtr moreEventInfo, IntPtr clientData)
        {
            if (eventType != VixEventType.VIX_EVENTTYPE_FIND_ITEM)
            {
                return;
            }

            IntPtr   ptr = IntPtr.Zero;
            VixError err = Vix_GetProperties(
                moreEventInfo,
                VixPropertyID.VIX_PROPERTY_FOUND_ITEM_LOCATION,
                ref ptr, VixPropertyID.VIX_PROPERTY_NONE);

            if (err == VixError.VIX_OK)
            {
                GCHandle      gch  = GCHandle.FromIntPtr(clientData);
                List <string> list = (List <string>)gch.Target;
                list.Add(Marshal.PtrToStringAnsi(ptr));
            }

            Vix_FreeBuffer(ptr);
        }
Пример #8
0
 public VMwareException(VixError err)
     : base(GetErrorText(err) + " (error: " + (ulong)err + ").")
 {
     this.Error = err;
 }
Пример #9
0
        private static string GetErrorText(VixError err)
        {
            IntPtr buf = Vix_GetErrorText(err, null);

            return(Marshal.PtrToStringAnsi(buf));
        }
Пример #10
0
 private static extern IntPtr Vix_GetErrorText(VixError err, string locale);