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); }
private static void CheckError(VixError err, VixError ignore = VixError.VIX_OK) { if (err != VixError.VIX_OK && err != ignore) { throw new VMwareException(err); } }
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()); } }
private static IntPtr GetSnapshot(IntPtr vmHandle, int index) { IntPtr snapshotHandle = IntPtr.Zero; VixError err = VixVM_GetRootSnapshot(vmHandle, index, ref snapshotHandle); CheckError(err); return(snapshotHandle); }
private static IntPtr GetSnapshot(IntPtr vmHandle, string name) { IntPtr snapshotHandle = IntPtr.Zero; VixError err = VixVM_GetNamedSnapshot(vmHandle, name, ref snapshotHandle); CheckError(err); return(snapshotHandle); }
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); }
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); }
public VMwareException(VixError err) : base(GetErrorText(err) + " (error: " + (ulong)err + ").") { this.Error = err; }
private static string GetErrorText(VixError err) { IntPtr buf = Vix_GetErrorText(err, null); return(Marshal.PtrToStringAnsi(buf)); }
private static extern IntPtr Vix_GetErrorText(VixError err, string locale);