http://support.microsoft.com/kb/156932によると、特定の条件が満たされた場合、ReadFile の呼び出しは同期しているように見えます。たとえば、ターゲット ファイルが NTFS で圧縮されている場合です。この記事では、ファイル ハンドルが IOCP に関連付けられている場合に何が起こるかについては何も述べていません。
この場合、ファイル ハンドルが IOCP に関連付けられている場合はどうなるでしょうか。このリクエストの IO 完了パケットを引き続き受信しますか、それともリクエストは完全に同期して実行されますか?
その場合、ReadFile 呼び出し全体をワーカー スレッドに配置する必要があります。最初に ReadFile 呼び出しを発行するスレッドはブロックできません。IOCP を検討している理由は、ReadFile 呼び出しをワーカー スレッドに入れることは、ReadFile の直後にブロックするワーカー スレッドへのコンテキスト スイッチを意味するためです。