probuje rozgryzc jak dziala overlapped io i natrafilem na kolejny problem.
readfielex blokuje jak chce czytac od EOF. tzn 0 bajtow, tylko eof.
powinno zwrocic Od razu, a tak nie jest.
ogolnie to zwraca tylko raz, tylko 1 sie wykonuje callback.
dalej tego nie rozumiem, help ;/
#include <windows.h>
HANDLE a;
OVERLAPPED ov;
DWORD w;
VOID CALLBACK cr(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped){
printf("error: %i, trans: %i\r\n", dwErrorCode, dwNumberOfBytesTransfered);
//GetOverlappedResult(a, lpOverlapped, &w, 0);
//printf("GLA: %i\r\n", GetLastError());
SetEvent(lpOverlapped->hEvent);
return;
}
int main(){
char buff[1024*1024];
a = CreateFileW(L"c:\\test.txt", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, OPEN_ALWAYS, 0, 0);
ZeroMemory(&ov, sizeof(OVERLAPPED));
ov.hEvent = CreateEvent(0, 1, 0, 0);
memset(buff, 'A', sizeof(buff));
while(1){
ResetEvent(ov.hEvent);
printf("%i\r\n", ReadFileEx(a, buff, 3, &ov, cr));
printf("%i\r\n", GetLastError());
WaitForSingleObjectEx(ov.hEvent, -1, 1);
puts("");
}
return 0;
}