/// <summary>
        /// Build a status from it's component parts.
        /// </summary>
        /// <param name="severity">The severity of the status code.</param>
        /// <param name="is_customer_code">Is this a customer code?</param>
        /// <param name="is_reserved">Is this a reserved code?</param>
        /// <param name="facility">The facility.</param>
        /// <param name="code">The status code.</param>
        /// <returns></returns>
        public static NtStatus BuildStatus(NtStatusSeverity severity, bool is_customer_code,
                                           bool is_reserved, NtStatusFacility facility, int code)
        {
            uint status = (uint)code |
                          ((uint)facility << 16) |
                          (is_reserved ? (1U << 28) : 0U) |
                          (is_customer_code ? (1U << 29) : 0U) |
                          ((uint)severity << 30);

            return((NtStatus)status);
        }
 internal NtStatusResult(NtStatus status)
 {
     Status       = (uint)status;
     Message      = NtObjectUtils.GetNtStatusMessage(status);
     Win32Error   = NtObjectUtils.MapNtStatusToDosError(status);
     StatusName   = status.ToString();
     Code         = status.GetStatusCode();
     CustomerCode = status.IsCustomerCode();
     Reserved     = status.IsReserved();
     Facility     = status.GetFacility();
     Severity     = status.GetSeverity();
 }