Die Deklaration von ReadFile ist falsch:

BOOL ReadFile(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // pointer to buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // pointer to number of bytes read
LPOVERLAPPED lpOverlapped // pointer to structure for data
);

also:

D READFILE PR 10U 0 ExtProc('ReadFile')
D DLL('Kernel32.dll')
D Linkage(*StdCall)
D 10I 0 Value
D * Value <= Adresse eines Puffers
D 10I 0 Value
D 10I 0 <= Adresse eines Long für Rückgabe
D $OVER * Value <= Adresse der OVERLAP-Struktur

Um Adressen zu übergeben verwendest du %addr(MyVar).