***本記事にはプロモーションが含まれています。***
なのだそうです。MSのKBに書いてあった。
そうでないと、WSAConnectがWSAEINVALを返すそうな…。道理でつながらないわけだ。ノンブロッキング動作には、socket()関数ではなくて、WSASocket()関数でソケットを作らないといけないということですね。
実際にconnectで調べてみると、最初はWSAEWOULDBLOCKが返って、次はWSAEINVALになる。やっぱりconnectを2回呼び出してはいけないみたい。あまり関係ないのかなあ。
これは、Winsock FAQに書いてあってもいい情報だと思うけど。
overlapped structure やcompletion functionをNULLにしておけば、ブロッキングと同じ動作にすることができるのだそうです。でも、CreateFileのところには、Overlapped動作のときはNULLにしてはいけないと書いてあったと思う。なんか複雑。
http://support.microsoft.com/kb/179942/EN-US/
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q181611