Gemäß http://support.microsoft.com/kb/156932 können Aufrufe von ReadFile synchron erscheinen, wenn bestimmte Bedingungen erfüllt sind. Zum Beispiel, wenn die Zieldatei NTFS komprimiert ist. Der Artikel sagt nichts darüber aus, was passiert, wenn das Datei-Handle einem IOCP zugeordnet wird.Was passiert mit Win32 IO Completion Port und synchron erscheinendem IO?
Was passiert in diesem Fall, wenn das Dateihandle mit einem IOCP verknüpft ist? Erhalte ich noch IO-Completion-Pakete für diese Anfrage oder wird die Anfrage komplett synchron durchgeführt?
Wenn ja, muss ich den gesamten ReadFile-Aufruf in einen Worker-Thread einfügen. Der Thread, der den ReadFile-Aufruf zu Beginn absetzt, darf nicht blockieren. Der Grund, warum ich IOCP in Erwägung ziehe, liegt darin, dass das Umsetzen des ReadFile-Aufrufs in einen Worker-Thread einen Kontextwechsel zum Worker-Thread bedeutet, der unmittelbar danach auf ReadFile blockiert.