После того, как я перешел с Framework 2 на Framework 4, я получаю сообщение об ошибке при запуске функции WriteFile.
[DllImport("kernel32.dll")]
public static extern bool WriteFile(SafeHandle hFile,
byte[] lpBuffer,
uint nNumberOfBytesToWrite,
out uint lpNumberOfBytesWritten,
long lpOverlapped);
Решение:
[DllImport("kernel32.dll")]
public static extern bool WriteFile(SafeHandle hFile,
byte[] lpBuffer,
uint nNumberOfBytesToWrite,
out uint lpNumberOfBytesWritten,
**Int32** lpOverlapped);
Параметр lpOverlapped должен быть int32, который является длинной без знака в
неуправляемый C ++.
Исходная ошибка:
PInvokeStackImbalance был обнаружен
Сообщение: вызов функции PInvoke '' разбалансировал стек. Это вероятно потому, что управляемая подпись PInvoke не совпадает с неуправляемой целевой подписью. Убедитесь, что соглашение о вызовах и параметры подписи PInvoke соответствуют целевой неуправляемой подписи.