Согласно http://support.microsoft.com/kb/156932 вызовы ReadFile могут отображаться синхронно, если выполняются определенные условия. Например, если целевой файл является сжатым NTFS. В статье ничего не говорится о том, что происходит, если дескриптор файла связан с IOCP.
Так что же происходит в этом случае, когда дескриптор файла связан с IOCP? Буду ли я получать пакеты завершения ввода-вывода для этого запроса или запрос будет выполняться полностью синхронно?
Если это так, я должен поместить весь вызов ReadFile в рабочий поток. Поток, который первоначально выполняет вызов ReadFile, не может блокироваться. Причина, по которой я рассматриваю IOCP, заключается в том, что помещение вызова ReadFile в рабочий поток означает переключение контекста на рабочий поток, который затем сразу же блокируется после чтения ReadFile.