Пишу высокопроизводительный сервер на Thread Pool API появившеся в Vista. Создаю сокет, ассоциирую с ним каллбек через CreateThreadpoolIo, делаю StartThreadpoolIo и вызываю AcceptEx чтобы принять соединение клиента.
AcceptEx может вернуть FALSE && WSAGetLastError() == ERROR_IO_PENDING — это обычная ситуация, при подключении клиента вызывается мой каллбек, также может вернуть FALSE && WSAGetLastError() != ERROR_IO_PENDING — значит произошла ошибка и надо вызвать CancelThreadpoolIo, мой каллбек не вызывается.
Вопрос: что делать если AcceptEx вернул TRUE? Вызывается ли каллбек, нужно ли делать CancelThreadpoolIo? MSDN не говорит насчет этого ничего определенного, получить такую ситуацию в своем коде мне не удалось, но обрабатывать ее надо.