- 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 */