예제 #1
0
        public JobObject(string jobObjectName)
        {
            if (string.IsNullOrEmpty(jobObjectName))
            {
                jobObjectName = null;
            }

            this.name = jobObjectName;

            this.jobHandle = NativeMethods.CreateJobObject(IntPtr.Zero, jobObjectName);
            if (this.jobHandle.IsInvalid)
            {
                if (jobObjectName == null)
                {
                    int error = Marshal.GetLastWin32Error();
                    throw new Win32Exception(error, "CreateJobObject failed.");
                }
                else
                {
                    // JOB_OBJECT_ALL_ACCESS = 0x1F001F
                    this.jobHandle = NativeMethods.OpenJobObject(0x1F001F, false, jobObjectName);
                    if (this.jobHandle.IsInvalid)
                    {
                        int error = Marshal.GetLastWin32Error();
                        throw new Win32Exception(error, "OpenJobObject failed.");
                    }
                }
            }

            this.UpdateExtendedLimit();
        }
예제 #2
0
 public static extern bool TerminateJobObject(JobObjectHandle hJob, uint uExitCode);
예제 #3
0
 public static extern bool AssignProcessToJobObject(JobObjectHandle hJob, IntPtr hProcess);
예제 #4
0
 public static extern bool QueryInformationJobObject(JobObjectHandle hJob, JobObjectInfoClass JobObjectInformationClass, IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength, IntPtr lpReturnLength);
예제 #5
0
 public static extern bool SetInformationJobObject(JobObjectHandle hJob, JobObjectInfoClass JobObjectInfoClass, IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength);
예제 #6
0
 public static extern bool IsProcessInJob(IntPtr Process, JobObjectHandle hJob, [MarshalAs(UnmanagedType.Bool)] out bool Result);
예제 #7
0
        public JobObject(string jobObjectName)
        {
            if (string.IsNullOrEmpty(jobObjectName))
            {
                jobObjectName = null;
            }

            this.name = jobObjectName;

            this.jobHandle = NativeMethods.CreateJobObject(IntPtr.Zero, jobObjectName);
            if (this.jobHandle.IsInvalid)
            {
                if (jobObjectName == null)
                {
                    int error = Marshal.GetLastWin32Error();
                    throw new Win32Exception(error, "CreateJobObject failed.");
                }
                else
                {
                    // JOB_OBJECT_ALL_ACCESS = 0x1F001F
                    this.jobHandle = NativeMethods.OpenJobObject(0x1F001F, false, jobObjectName);
                    if (this.jobHandle.IsInvalid)
                    {
                        int error = Marshal.GetLastWin32Error();
                        throw new Win32Exception(error, "OpenJobObject failed.");
                    }
                }
            }

            this.UpdateExtendedLimit();
        }
예제 #8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="JobObject"/> class. No Windows Job Object is created.
 /// </summary>
 private JobObject(JobObjectHandle jobObject, string jobObjectName)
 {
     this.jobHandle = jobObject;
     this.name = jobObjectName;
 }
예제 #9
0
 public static extern bool TerminateJobObject(JobObjectHandle hJob, uint uExitCode);
예제 #10
0
 public static extern bool AssignProcessToJobObject(JobObjectHandle hJob, IntPtr hProcess);
예제 #11
0
 public static extern bool QueryInformationJobObject(JobObjectHandle hJob, JobObjectInfoClass JobObjectInformationClass, IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength, IntPtr lpReturnLength);
예제 #12
0
 public static extern bool SetInformationJobObject(JobObjectHandle hJob, JobObjectInfoClass JobObjectInfoClass, IntPtr lpJobObjectInfo, uint cbJobObjectInfoLength);
예제 #13
0
 public static extern bool IsProcessInJob(IntPtr Process, JobObjectHandle hJob, [MarshalAs(UnmanagedType.Bool)] out bool Result);
예제 #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="JobObject"/> class. No Windows Job Object is created.
 /// </summary>
 private JobObject(JobObjectHandle jobObject, string jobObjectName)
 {
     this.jobHandle = jobObject;
     this.name      = jobObjectName;
 }