diff -ru w32api-3.6.orig/include/ddk/winddk.h w32api-3.6/include/ddk/winddk.h
--- w32api-3.6.orig/include/ddk/winddk.h	2006-02-24 18:26:47.000000000 +1030
+++ w32api-3.6/include/ddk/winddk.h	2006-03-01 11:27:11.000000000 +1030
@@ -58,6 +58,15 @@
 #define __W32_OPTIONAL
 #define UNALLIGNED
 
+/* Documented pseudo modifiers for parameters
+   These can cause conflicts with portable code, but must be available
+   by default as they are documented in the original API's */
+#ifndef NO_W32_PSEUDO_MODIFIERS
+#define IN
+#define OUT
+#define OPTIONAL
+#endif
+
 #define CONST const
 #define VOLATILE volatile
 
diff -ru w32api-3.6.orig/include/rpcdce.h w32api-3.6/include/rpcdce.h
--- w32api-3.6.orig/include/rpcdce.h	2006-02-24 18:26:47.000000000 +1030
+++ w32api-3.6/include/rpcdce.h	2006-03-01 11:31:50.000000000 +1030
@@ -14,6 +14,15 @@
 #ifndef __W32_OPTIONAL
 #define __W32_OPTIONAL
 #endif
+
+#ifndef NO_W32_PSEUDO_MODIFIERS
+#define IN
+#define OUT
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+#endif
+
 #define uuid_t UUID
 #define rpc_binding_handle_t RPC_BINDING_HANDLE
 #define rpc_binding_vector_t RPC_BINDING_VECTOR
diff -ru w32api-3.6.orig/include/windef.h w32api-3.6/include/windef.h
--- w32api-3.6.orig/include/windef.h	2006-02-24 18:26:47.000000000 +1030
+++ w32api-3.6/include/windef.h	2006-03-01 11:33:31.000000000 +1030
@@ -54,12 +54,21 @@
 #ifndef TRUE
 #define TRUE 1
 #endif
+
 #define __W32_IN
 #define __W32_OUT
 #ifndef __W32_OPTIONAL
 #define __W32_OPTIONAL
 #endif
 
+#ifndef NO_W32_PSEUDO_MODIFIERS
+#define IN
+#define OUT
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+#endif
+
 #ifdef __GNUC__
 #define PACKED __attribute__((packed))
 #ifndef _fastcall
