Merge trunk head (r41474)
[reactos.git] / reactos / include / ddk / wdm.h
index ef23680..a7e1d24 100644 (file)
@@ -28,6 +28,13 @@ extern "C" {
 #define NTKERNELAPI DECLSPEC_IMPORT\r
 #endif\r
 \r
+#ifdef _WIN64\r
+#define PORT_MAXIMUM_MESSAGE_LENGTH 512\r
+#else\r
+#define PORT_MAXIMUM_MESSAGE_LENGTH 256\r
+#endif\r
+\r
+\r
 /* Simple types */\r
 typedef UCHAR KPROCESSOR_MODE;\r
 typedef LONG KPRIORITY;\r
@@ -71,7 +78,100 @@ typedef int CM_RESOURCE_TYPE;
 #define CmResourceTypePcCardConfig       130\r
 #define CmResourceTypeMfCardConfig       131\r
 \r
-\r
+typedef enum _INTERFACE_TYPE {\r
+  InterfaceTypeUndefined = -1,\r
+  Internal,\r
+  Isa,\r
+  Eisa,\r
+  MicroChannel,\r
+  TurboChannel,\r
+  PCIBus,\r
+  VMEBus,\r
+  NuBus,\r
+  PCMCIABus,\r
+  CBus,\r
+  MPIBus,\r
+  MPSABus,\r
+  ProcessorInternal,\r
+  InternalPowerBus,\r
+  PNPISABus,\r
+  PNPBus,\r
+  MaximumInterfaceType\r
+} INTERFACE_TYPE, *PINTERFACE_TYPE;\r
+\r
+/* IO_RESOURCE_DESCRIPTOR.Option */\r
+\r
+#define IO_RESOURCE_PREFERRED             0x01\r
+#define IO_RESOURCE_DEFAULT               0x02\r
+#define IO_RESOURCE_ALTERNATIVE           0x08\r
+\r
+typedef struct _IO_RESOURCE_DESCRIPTOR {\r
+  UCHAR  Option;\r
+  UCHAR  Type;\r
+  UCHAR  ShareDisposition;\r
+  UCHAR  Spare1;\r
+  USHORT  Flags;\r
+  USHORT  Spare2;\r
+  union {\r
+    struct {\r
+      ULONG  Length;\r
+      ULONG  Alignment;\r
+      PHYSICAL_ADDRESS  MinimumAddress;\r
+      PHYSICAL_ADDRESS  MaximumAddress;\r
+    } Port;\r
+    struct {\r
+      ULONG  Length;\r
+      ULONG  Alignment;\r
+      PHYSICAL_ADDRESS  MinimumAddress;\r
+      PHYSICAL_ADDRESS  MaximumAddress;\r
+    } Memory;\r
+    struct {\r
+      ULONG  MinimumVector;\r
+      ULONG  MaximumVector;\r
+    } Interrupt;\r
+    struct {\r
+      ULONG  MinimumChannel;\r
+      ULONG  MaximumChannel;\r
+    } Dma;\r
+    struct {\r
+      ULONG  Length;\r
+      ULONG  Alignment;\r
+      PHYSICAL_ADDRESS  MinimumAddress;\r
+      PHYSICAL_ADDRESS  MaximumAddress;\r
+    } Generic;\r
+    struct {\r
+      ULONG  Data[3];\r
+    } DevicePrivate;\r
+    struct {\r
+      ULONG  Length;\r
+      ULONG  MinBusNumber;\r
+      ULONG  MaxBusNumber;\r
+      ULONG  Reserved;\r
+    } BusNumber;\r
+    struct {\r
+      ULONG  Priority;\r
+      ULONG  Reserved1;\r
+      ULONG  Reserved2;\r
+    } ConfigData;\r
+  } u;\r
+} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;\r
+\r
+typedef struct _IO_RESOURCE_LIST {\r
+  USHORT  Version;\r
+  USHORT  Revision;\r
+  ULONG  Count;\r
+  IO_RESOURCE_DESCRIPTOR  Descriptors[1];\r
+} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;\r
+\r
+typedef struct _IO_RESOURCE_REQUIREMENTS_LIST {\r
+  ULONG  ListSize;\r
+  INTERFACE_TYPE  InterfaceType;\r
+  ULONG  BusNumber;\r
+  ULONG  SlotNumber;\r
+  ULONG  Reserved[3];\r
+  ULONG  AlternativeLists;\r
+  IO_RESOURCE_LIST  List[1];\r
+} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;\r
 \r
 //\r
 // Global debug flag\r
@@ -79,6 +179,81 @@ typedef int CM_RESOURCE_TYPE;
 extern ULONG NtGlobalFlag;\r
 \r
 \r
+#include <pshpack4.h>\r
+typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR {\r
+  UCHAR Type;\r
+  UCHAR ShareDisposition;\r
+  USHORT Flags;\r
+  union {\r
+    struct {\r
+      PHYSICAL_ADDRESS Start;\r
+      ULONG Length;\r
+    } Generic;\r
+    struct {\r
+      PHYSICAL_ADDRESS Start;\r
+      ULONG Length;\r
+    } Port;\r
+    struct {\r
+      ULONG Level;\r
+      ULONG Vector;\r
+      KAFFINITY Affinity;\r
+    } Interrupt;\r
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)\r
+    struct {\r
+      union {\r
+        struct {\r
+          USHORT Reserved;\r
+          USHORT MessageCount;\r
+          ULONG Vector;\r
+          KAFFINITY Affinity;\r
+        } Raw;\r
+        struct {\r
+          ULONG Level;\r
+          ULONG Vector;\r
+          KAFFINITY Affinity;\r
+        } Translated;\r
+      };\r
+    } MessageInterrupt;\r
+#endif\r
+    struct {\r
+      PHYSICAL_ADDRESS Start;\r
+      ULONG Length;\r
+    } Memory;\r
+    struct {\r
+      ULONG Channel;\r
+      ULONG Port;\r
+      ULONG Reserved1;\r
+    } Dma;\r
+    struct {\r
+      ULONG Data[3];\r
+    } DevicePrivate;\r
+    struct {\r
+      ULONG Start;\r
+      ULONG Length;\r
+      ULONG Reserved;\r
+    } BusNumber;\r
+    struct {\r
+      ULONG DataSize;\r
+      ULONG Reserved1;\r
+      ULONG Reserved2;\r
+    } DeviceSpecificData;\r
+#if (NTDDI_VERSION >= NTDDI_LONGHORN)\r
+    struct {\r
+      PHYSICAL_ADDRESS Start;\r
+      ULONG Length40;\r
+    } Memory40;\r
+    struct {\r
+      PHYSICAL_ADDRESS Start;\r
+      ULONG Length48;\r
+    } Memory48;\r
+    struct {\r
+      PHYSICAL_ADDRESS Start;\r
+      ULONG Length64;\r
+    } Memory64;\r
+#endif\r
+  } u;\r
+} CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;\r
+#include <poppack.h>\r
 \r
 //\r
 // Section map options\r
@@ -292,7 +467,7 @@ InterlockedExchangeAdd(
 /*\r
  * PVOID\r
  * InterlockedExchangePointer(\r
- *   IN OUT PVOID VOLATILE  *Target,\r
+ *   IN OUT PVOID volatile  *Target,\r
  *   IN PVOID  Value)\r
  */\r
 #define InterlockedExchangePointer(Target, Value) \\r
@@ -2324,6 +2499,8 @@ typedef struct _EX_RUNDOWN_REF {
     };\r
 } EX_RUNDOWN_REF, *PEX_RUNDOWN_REF;\r
 \r
+typedef struct _EX_RUNDOWN_REF_CACHE_AWARE  *PEX_RUNDOWN_REF_CACHE_AWARE;\r
+\r
 typedef enum _WORK_QUEUE_TYPE {\r
   CriticalWorkQueue,\r
   DelayedWorkQueue,\r