イベントを2つ作成する。つまり……

Event = WSACreateEvent(); // FD_READ,FD_WRITE等用
_Event = CreateEvent(NULL, FALSE, FALSE, NULL); // FD_ACCEPT用

FD_ACCEPTを判定するイベントだけ、別で作成する必要がある。
acceptはソケットを返す関数である。
返却されるソケット「は」、FD_READ等を判定できても、
返却している時点で、acceptは終了しているので、FD_ACCEPTを判定できない。

そこで、acceptへ「渡す」ソケットの段階で、FD_ACCEPTを判定する。

10


このようにする。

(注1)PhaseNowSocketは0で初期化されているただの変数である。
(注2)Eの付いている関数は、ただエラー処理を内包しているだけで、通常の関数と同じ挙動である。