WaitForMultipleObjects() を使用して複数の非同期 ReadFile() の完了を待機しようとしていますが、常にすぐに戻り、バイトは読み取られていません。一方、GetOverlappedResult() は常に成功します。何が間違っていたのかわかりません。
以下のコード ブロックで、非同期の ReadFile() を 1 つだけ使用してこれをテストしています。
events = (HANDLE *)malloc(sizeof(HANDLE));
buffer = (BYTE*)malloc(BufferSize*sizeof(BYTE));
memset(buffer, 0, BufferSize*sizeof(BYTE));
hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (!hEvent){
printf("can't create event\n");
return 0;
}
memset(&testOv, 0, sizeof(testOv));
testOv.hEvent = hEvent; //event to use with waitformultipleobject()
testFile = CreateFile(SrcDst[0][0], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if (INVALID_HANDLE_VALUE==testFile)
{
printf("Unable to open file %s. Error=%d\n",SrcDst[0][0], GetLastError());
return 0;
}
events[0] = testOv.hEvent;
RF = ReadFile(testFile, buffer, 25, &byteRead, &testOv);
//WaitForMultipleObjects(1, events, TRUE, INFINITE); return before any byte is read
//WaitForSingleObject(testFile, INFINITE); waiting indefinitely
GetOverlappedResult(testFile, &testOv, &byteRead, TRUE);
for (i = 0; i < byteRead; i++){
printf("%c", (char)buffer[i]);
}
printf("byteRead: %d\n", byteRead);
printf("error: %d\n", GetLastError());