For socket operations you should't be touching (or looking at) anything in the OVERLAPPED structure. None of it applies to IOCPs and especially the "Internal" fields which are for use by the system so they have NO meaning to your code. Ok, you can look at them, but don't expect any specific values :) I would suggest clearing the OVERLAPPED struct to 0s before every operation. If you need to add your own fields (I'm not sure how one would do overlapped ops without doing this) then define your own struct which includes an OVERLAPPED struct. You may have seen these, but here's a couple articles that helped me alot when I first used an IOCP... Writing Windows NT Server Applications in MFC Using I/O Completion Ports [^] Windows Sockets 2.0: Write Scalable Winsock Apps Using Completion Ports[^] INFO: Design Issues When Using IOCP in a Winsock Server[^] And this one's in the online help - <--edit -- modified at 13:21 Tuesday 16th January, 2007