FUNCTION ReadFile( &
integer(BOOL) :: ReadFile ! BOOL
!DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ReadFile' :: ReadFile
integer(HANDLE) hFile ! HANDLE hFile
integer(LPVOID) lpBuffer ! LPVOID lpBuffer
integer(DWORD) nNumberOfBytesToRead ! DWORD nNumberOfBytesToRead
integer(DWORD) lpNumberOfBytesRead ! LPDWORD lpNumberOfBytesRead
!DEC$ ATTRIBUTES REFERENCE, IGNORE_LOC, ALLOW_NULL :: lpOverlapped
TYPE (T_OVERLAPPED) lpOverlapped ! LPOVERLAPPED lpOverlapped
Since number of bytes read is a returned value it needs to be a pointer and should be declaed with INTEGER(LPDWORD) as it was in your previous kernal32.f90
writeFile has the same issue.
The new interfaces are causing crashes for me. I substitued the old interface and all is OK now.
For more complete information about compiler optimizations, see our Optimization Notice.