のMSDNページにWriteFileExは、完了ルーチンを指定する引数があるため、IOCPモデルでは使用できないと記載されています。ファイルハンドルがI/O完了ポートに関連付けられている場合、WriteFileEx失敗します。
ただし、WSASend呼び出し元が最後の引数として完了ルーチンを指定できるようにしますが、この関数はIOCPモデルで使用できます。
IOCPを使用したWinSockのいくつかの例を調べたところ、最後の引数lpCompletionRoutineは常にnullであることがわかりました。これは必須ですか?