#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
#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
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
/*\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
};\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