public bool UnlockProcess(Process ra3Process, Pinvokes.ProcessAccessFlags flags) { LockProcess(); Logger.Debug($"attempt to unlock process (open process). using pid {ra3Process.Id}"); IntPtr tmpHandle = Pinvokes.OpenProcess( flags , false , ra3Process.Id ); if (tmpHandle != IntPtr.Zero) { _processUnlocked = true; Handle = tmpHandle; Ra3ProcessHandle.Add(tmpHandle, ra3Process); Logger.Debug("OK.. unlock process (open process)"); return(true); } _processUnlocked = false; int errCode = Marshal.GetLastWin32Error(); Logger.Error($"ER.. unlock process (open process). code: {errCode}"); return(false); }
public static IntPtr OpenProcess(Pinvokes.ProcessAccessFlags processAccess, bool bInheritHandle, int processId) { IntPtr handle = Pinvokes.OpenProcess(processAccess, bInheritHandle, processId); if (handle == IntPtr.Zero) { throw new Win32Exception(Marshal.GetLastWin32Error()); } return(handle); }