Когда я пишу программу о порте завершения ввода-вывода в Windows Vista, первый пример не работает, и GetQueuedCompletionStatus() не может получить структуры OVERLAPPED.
Поэтому я поместил структуру OVERLAPPED в глобальную область видимости, и она отлично работает. Это почему?
КОД1:
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);
}
}