The problem with FILE_SKIP_COMPLETION_PORT_ON_SUCCESS and datagram socket read errors is fixed in Windows 8
Back in January 2010 I discovered that if
FILE_SKIP_COMPLETION_PORT_ON_SUCCESS is enabled on a datagram socket and a datagram arrives when a read is NOT currently pending and the datagram is bigger than the buffer supplied to the next read operation then no error is returned and the read will never complete. This was confirmed as a Windows bug and I’m pleased to see that it’s been fixed in Windows 8 and Server 2012. It’s still present in Windows 7 but that actually makes it easier to reason about the behaviour of the flag on the operating system that you’re running on.
More details and links can be found in the original blog entry, here.