Когда я пишу программу о порте завершения ввода-вывода в Windows Vista,
первый пример не работает, и GetQueuedCompletionStatus () не может получить
любые ПЕРЕКРЫТЫЕ структуры.
Итак, я поместил структуру OVERLAPPED в глобальную область видимости, и она работает потрясающе.
Почему это так?
code1:
int main()
{
OVERLAPPED o;
..
CreateIoCompletionPort(....);
for (int i = 0; i<10; i++)
{
WriteFile(..,&o);
OVERLAPPED* po;
GetQueuedCompletionStatus(..,&po);
}
}
Кодекса2:
OVERLAPPED o;
int main()
{
..
CreateIoCompletionPort(....);
for (int i = 0; i<10; i++)
{
WriteFile(..,&o);
OVERLAPPED* po;
GetQueuedCompletionStatus(..,&po);
}
}