private T?GetNetRateValue <T>(JobObjectNetRateControlFlags enable_flag, Func <JobObjectNetRateControlInformation, T> callback) where T : struct { var result = GetNetRateControlInformation(); if (result.ControlFlags.HasFlag(JobObjectNetRateControlFlags.Enable) && result.ControlFlags.HasFlag(enable_flag)) { return(callback(result)); } return(null); }
private void SetNetRateValue <T>(T?value, JobObjectNetRateControlFlags enable_flag, Func <T, JobObjectNetRateControlInformation, JobObjectNetRateControlInformation> update_func) where T : struct { var result = GetNetRateControlInformation(); if (value.HasValue) { result = update_func(value.Value, result); result.ControlFlags |= JobObjectNetRateControlFlags.Enable | enable_flag; } else { result.ControlFlags &= ~enable_flag; if (result.ControlFlags == JobObjectNetRateControlFlags.Enable) { result.ControlFlags = JobObjectNetRateControlFlags.None; } } SetInfo(JobObjectInformationClass.JobObjectNetRateControlInformation, result); }