Давайте в качестве примера выберем следующий вызов Win API:
BOOL MessageBeep(UINT uType); // from User32.dll
Входным параметром является UINT для указания типа звукового сигнала, который может быть как 32-разрядным, так и 64-разрядным целым числом, в зависимости от того, какую версию Windows мы вызываем ( или я ошибаюсь? ).
Если я хочу P / Invoke звуковой сигнал из C #, я применяю объявление DllImport:
[DllImport("User32.dll")]
static extern Boolean MessageBeep(UInt32 beepType);
Будет ли этот код C # работать под Windows x64?
- Если да, почему нормально вызывать вызов 32-битным целым числом, в то время как ожидается 64-битное целое (при условии, что я прав в этом)?
- Если нет, как должна выглядеть правильная декларация P / Invoke, независимая от платформы, в C #?