- better support for non-blocking COMM and socket read/writes:
  + added necessary semantics to fd flags
  + no longer uses fd type (but fd flags) read/write semantic behavior
- fixed socket code to use the proper manifest constants
- fixes for kernel32.GetOverlappedResult without hEvent set
- in ntdll.Nt{Read|Write}File
  + always reset the event
  + added support for longlong offsets
  + better object disposal in error handling code paths

diff --git a/server/protocol.def b/server/protocol.def
index a2864be..3859533 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -612,10 +612,12 @@
     FD_TYPE_DEFAULT,
     FD_TYPE_SOCKET
 };
-#define FD_FLAG_OVERLAPPED         0x01
-#define FD_FLAG_TIMEOUT            0x02
+#define FD_FLAG_OVERLAPPED         0x01 /* fd opened in overlapped mode */
+#define FD_FLAG_TIMEOUT            0x02 /* read/write is synchronous */
 #define FD_FLAG_RECV_SHUTDOWN      0x04
 #define FD_FLAG_SEND_SHUTDOWN      0x08
+#define FD_FLAG_AVAILABLE          0x10 /* in overlap read/write operation, 
+                                         * only handle available data (don't wait) */
 
 
 /* Flush a file buffers */