Я нашел решение сам. Это была довольно глупая ошибка новичка, но я обнаружил, что у некоторых пользователей возникла та же проблема, и, поскольку симптомы ошибки вовсе не указывают в правильном направлении, я опубликую свое решение.
Сначала я провел дальнейшие рефакторинги, чтобы еще больше заглушить код. Сделав каждую переменную глобальной, я наконец-то получил ошибку «недопустимое соглашение о вызовах» при вызове ReadFile
.
Короче говоря, объявление импорта и фактический вызов ReadFile
были неверными для последнего параметра (параметр OVERLAPPED
)
Вот что я сделал:
Declare Function ReadFile ..., lpOverlapped As Any) As Long
Call ReadFile(..., 0)
Правильно будет любой из этих:
Declare Function ReadFile ..., lpOverlapped As Any) As Long
Call ReadFile(..., ByVal 0)
Declare Function ReadFile ..., ByVal lpOverlapped As Long) As Long
Call ReadFile(..., 0)
Declare Function ReadFile ..., lpOverlapped As OVERLAPPED) As Long
Call ReadFile(..., myVariableOfTypeOverlapped)