There are two modes of operations in win32. One is non-overlapped mode and the other is overlapped mode. The former just waits for some event to occur. But, the latter create a thread to take over the I/O and the original process continues to work as specified in the program without blocking. Refer MSDN for further information.