According to http://support.microsoft.com/kb/156932 calls to ReadFile can appear synchronous if certain conditions are met. For example if the target file is NTFS compressed. The article does not say anything about what happens if the file handle is accociated to an IOCP.
So what happens in this case when the file handle is associated with an IOCP? Will i still receive IO completion packets for this request or will the request carried out completely synchronous?
If so, i have to put the whole ReadFile call in a worker thread. The thread that issues the ReadFile call initially is not allowed to block. The reason i am considering IOCP is because putting the ReadFile call into a worker thread means a context switch to the worker thread which then blocks immediatly after on ReadFile.