I have been busy lately with using functions from the User32.dll in C#. For this you use a lot of
[ImportDll("User32.dll")]
public static extern void functionName();
And If you start googling for how to use a particular function everyone seems to be using the Fields wrong. When you should you be using which field and how to know how.
Fields and explanation:
BestFitMapping: Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters.
CallingConvention:
Indicates the calling convention of an entry point.
CharSet:
Indicates how to marshal string parameters to the method and controls name mangling.
EntryPoint: Indicates the name or ordinal of the DLL entry point to be called.
ExactSpelling: Controls whether the DllImportAttribute.CharSet field causes the common language runtime to search an unmanaged DLL for entry-point names other than the one specified.
PreserveSig: Indicates whether unmanaged methods that have HRESULT or retval return values are directly translated or whether HRESULT or retval return values are automatically converted to exceptions.
SetLastError: Indicates whether the callee calls the SetLastError Win32 API function before returning from the attributed method.
ThrowOnUnmappableChar: Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character.
source: DllImportAttribute Class (System.Runtime.InteropServices)
This is what I could find about them, can someone please explain these fields and when to which field.
Edit
example:
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
Is the SetLastError needed and the CharSet field and what do they do if they are. And this question for every field.