Exemple #1
0
        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);
        }