Opérations asynchrones avec E/S Les ports d'achèvement renvoient 0 octet transféré, bien que les opérations d'E/S fonctionnent comme prévu (mes tampons de lecture sont pleins).Opérations asynchrones avec des ports d'achèvement d'E/S retour 0 octets transférés
BYTE buffer[1024] = {0};
OVERLAPPED o = {0};
HANDLE file = CreateFile(
_T("hello.txt"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
HANDLE completion_port = CreateIoCompletionPort(
file,
NULL,
0,
0
);
ReadFile(
file,
buffer,
1024,
NULL,
&o
);
Dans le fil de travail:
DWORD numBytes = 0;
LPOVERLAPPED po;
GetQueuedCompletionStatus(
completion_port,
&numBytes,
0,
&po,
INFINITE
);
GetOverlappedResult(file, &o, &numBytes, FALSE);
Les deux fonctions renvoient 0 octets dans numBytes, mais buffer
est remplissage. Est-ce que ce comportement est attendu?
Merci.
Oui, vous aviez raison sur le pointeur sur la touche. Vous aviez aussi raison dans votre hypothèse que j'ai essayé ces 2 fonctions pour voir si certaines d'entre elles fonctionnent :-). Merci. –