private static extern int FormatMessage( FORMAT_MESSAGE dwFlags, IntPtr lpSource, int dwMessageId, int dwLanguageId, [MarshalAs(LPStr)] out string lpBuffer, int nSize, IntPtr Arguments );
public static extern uint FormatMessage( FORMAT_MESSAGE dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpBuffer, uint nSize, ref IntPtr Arguments);
internal static extern int FormatMessage(FORMAT_MESSAGE dwFlags, IntPtr lpSource, int dwMessageId, int dwLanguageId, StringBuilder lpBuffer, int nSize, IntPtr Arguments);
static extern int FormatMessage(FORMAT_MESSAGE dwFlags, IntPtr lpSource, int dwMessageId, uint dwLanguageId, out StringBuilder msgOut, int nSize, IntPtr Arguments);