public RestartManagerProcessInfo[] GetList() { uint desiredCount; uint requestingCount = 0; RestartManagerProcessInfo[] infos = null; RestartManagerRebootReason rebootReason = RestartManagerRebootReason.None; Win32Error result = NativeMethods.RmGetList(_sessionHandle, out desiredCount, ref requestingCount, null, ref rebootReason); while (result == Win32Error.ERROR_MORE_DATA) { infos = new RestartManagerProcessInfo[desiredCount]; requestingCount = desiredCount; result = NativeMethods.RmGetList(_sessionHandle, out desiredCount, ref requestingCount, infos, ref rebootReason); } if (result == Win32Error.ERROR_CANCELLED) { Log.Message("[RestartManager]Operation [GetList] cancelled by user."); return(new RestartManagerProcessInfo[0]); } result.Check(); return(infos); }
public RestartManagerProcessInfo[] GetList() { uint desiredCount; uint requestingCount = 0; RestartManagerProcessInfo[] infos = null; RestartManagerRebootReason rebootReason = RestartManagerRebootReason.None; Win32Error result = NativeMethods.RmGetList(_sessionHandle, out desiredCount, ref requestingCount, null, ref rebootReason); while (result == Win32Error.ERROR_MORE_DATA) { infos = new RestartManagerProcessInfo[desiredCount]; requestingCount = desiredCount; result = NativeMethods.RmGetList(_sessionHandle, out desiredCount, ref requestingCount, infos, ref rebootReason); } if (result == Win32Error.ERROR_CANCELLED) { Log.Message("[RestartManager]Operation [GetList] cancelled by user."); return new RestartManagerProcessInfo[0]; } result.Check(); return infos; }
public static Process[] GetFileLockers(params string[] filePathes) { RestartManagerProcessInfo[] infos; using (RestartManager rm = new RestartManager()) { rm.RegisterFiles(filePathes); infos = rm.GetList(); } if (infos.IsNullOrEmpty()) { return(new Process[0]); } Process[] result = new Process[infos.Length]; for (int index = 0; index < infos.Length; index++) { RestartManagerProcessInfo info = infos[index]; result[index] = Process.GetProcessById(info.Process.ProcessId); } return(result); }