Let us pick the following Win API call as an example:
BOOL MessageBeep(UINT uType); // from User32.dll
The input parameter is UINT to specify the beep type, which is can be both 32bit and 64bit integer, depending on which Windows version we call it on (or am I wrong?).
If I want to P/Invoke message beep from C#, so I apply the DllImport declaration:
[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);
Will this code C# work under Windows x64?
- If yes, why is it OK to invoke the call a 32bit integer, while a 64bit integer is expected (assuming that I am correct on this)?
- If no, how should the proper platform agnostic P/Invoke declaration look like in C#?