private static extern int FormatMessage(
     FormatFlags dwFlags,
     IntPtr lpSource,
     uint dwMessageId,
     int dwLanguageId,
     out SafeLocalAllocHandle lpBuffer,
     int nSize,
     IntPtr Arguments
     );
        /// <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)
        {
            SafeLocalAllocHandle buffer = null;

            if (FormatMessage(FormatFlags.AllocateBuffer | FormatFlags.FromHModule
                              | FormatFlags.FromSystem | FormatFlags.IgnoreInserts,
                              GetModuleHandle("ntdll.dll"), status, 0, out buffer, 0, IntPtr.Zero) > 0)
            {
                using (buffer)
                {
                    return(Marshal.PtrToStringUni(buffer.DangerousGetHandle()).Trim());
                }
            }
            return(String.Empty);
        }
示例#3
0
 static extern bool ConvertStringSidToSid(
     string StringSid,
     out SafeLocalAllocHandle Sid);
示例#4
0
 static extern bool ConvertStringSecurityDescriptorToSecurityDescriptor(
     string StringSecurityDescriptor,
     int StringSDRevision,
     out SafeLocalAllocHandle SecurityDescriptor,
     out int SecurityDescriptorSize);
示例#5
0
 static extern bool ConvertSecurityDescriptorToStringSecurityDescriptor(
     byte[] SecurityDescriptor,
     int RequestedStringSDRevision,
     SecurityInformation SecurityInformation,
     out SafeLocalAllocHandle StringSecurityDescriptor,
     out int StringSecurityDescriptorLen);