/// <summary>
        /// Convert an NTSTATUS to a message description.
        /// </summary>
        /// <param name="status">The status to convert.</param>
        /// <returns>The message description, or an empty string if not found.</returns>
        public static string GetNtStatusMessage(NtStatus status)
        {
            SafeLoadLibraryHandle module = SafeLoadLibraryHandle.Null;
            uint message_id = (uint)status;

            if (status.GetFacility() == NtStatusFacility.FACILITY_NTWIN32)
            {
                module     = SafeLoadLibraryHandle.GetModuleHandleNoThrow("kernel32.dll");
                message_id = (uint)status.GetStatusCode();
            }
            else
            {
                module = SafeLoadLibraryHandle.GetModuleHandleNoThrow("ntdll.dll");
            }

            return(Win32Utils.FormatMessage(module, message_id));
        }
Exemplo n.º 2
0
    public static string FormatWin32ErrorMessage(uint error)
    {
        IntPtr zero = IntPtr.Zero;
        string str;

        if ((int)Win32Utils.FormatMessage(4864U, IntPtr.Zero, error, 0U, ref zero, 0U, (string[])null) == 0)
        {
            str = string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resource.InvalidServer, new object[1]
            {
                (object)error
            });
        }
        else
        {
            str = Marshal.PtrToStringAnsi(zero);
        }
        return(str);
    }