[XDK]
[reactos.git] / include / ddk / ntddk.h
index 5c03ef7..42abb01 100644 (file)
@@ -1227,6 +1227,128 @@ typedef enum _BUS_DATA_TYPE {
   MaximumBusDataType
 } BUS_DATA_TYPE, *PBUS_DATA_TYPE;
 
+/* Some Server 2003 DDK definitions */
+#define PCI_INT_ROUTE_INTRF_STANDARD_VER 1
+
+typedef NTSTATUS
+(NTAPI *PLEGACY_DEVICE_DETECTION_HANDLER)(
+  IN PVOID Context,
+  IN INTERFACE_TYPE LegacyBusType,
+  IN ULONG BusNumber,
+  IN ULONG SlotNumber,
+  OUT PDEVICE_OBJECT *PhysicalDeviceObject);
+
+typedef struct _ROUTING_TOKEN {
+  PVOID LinkNode;
+  ULONG StaticVector;
+  UCHAR Flags;
+} ROUTING_TOKEN, *PROUTING_TOKEN;
+
+typedef NTSTATUS
+(NTAPI *PGET_INTERRUPT_ROUTING)(
+  IN PDEVICE_OBJECT Pdo,
+  OUT ULONG *Bus,
+  OUT ULONG *PciSlot,
+  OUT UCHAR *InterruptLine,
+  OUT UCHAR *InterruptPin,
+  OUT UCHAR *ClassCode,
+  OUT UCHAR *SubClassCode,
+  OUT PDEVICE_OBJECT *ParentPdo,
+  OUT ROUTING_TOKEN *RoutingToken,
+  OUT UCHAR *Flags);
+
+typedef NTSTATUS
+(NTAPI *PSET_INTERRUPT_ROUTING_TOKEN)(
+  IN PDEVICE_OBJECT Pdo,
+  IN PROUTING_TOKEN RoutingToken);
+
+typedef VOID
+(NTAPI *PUPDATE_INTERRUPT_LINE)(
+  IN PDEVICE_OBJECT Pdo,
+  IN UCHAR LineRegister);
+
+typedef struct _INT_ROUTE_INTERFACE_STANDARD {
+  USHORT Size;
+  USHORT Version;
+  PVOID Context;
+  PINTERFACE_REFERENCE InterfaceReference;
+  PINTERFACE_DEREFERENCE InterfaceDereference;
+  PGET_INTERRUPT_ROUTING GetInterruptRouting;
+  PSET_INTERRUPT_ROUTING_TOKEN SetInterruptRoutingToken;
+  PUPDATE_INTERRUPT_LINE UpdateInterruptLine;
+} INT_ROUTE_INTERFACE_STANDARD, *PINT_ROUTE_INTERFACE_STANDARD;
+
+typedef struct _LEGACY_DEVICE_DETECTION_INTERFACE {
+  USHORT Size;
+  USHORT Version;
+  PVOID Context;
+  PINTERFACE_REFERENCE InterfaceReference;
+  PINTERFACE_DEREFERENCE InterfaceDereference;
+  PLEGACY_DEVICE_DETECTION_HANDLER LegacyDeviceDetection;
+} LEGACY_DEVICE_DETECTION_INTERFACE, *PLEGACY_DEVICE_DETECTION_INTERFACE;
+
+/* FIXME : These definitions don't exist in public headers */
+
+#define PCI_CB_INTRF_VERSION             1
+#define PCI_PME_INTRF_STANDARD_VER       1
+#define PNP_LOCATION_INTERFACE_VERSION   1
+
+DEFINE_GUID(GUID_PCI_CARDBUS_INTERFACE_PRIVATE, 0xcca82f31, 0x54d6, 0x11d1, 0x82, 0x24, 0x00, 0xa0, 0xc9, 0x32, 0x43, 0x85);
+DEFINE_GUID(GUID_PCI_PME_INTERFACE, 0xaac7e6ac, 0xbb0b, 0x11d2, 0xb4, 0x84, 0x00, 0xc0, 0x4f, 0x72, 0xde, 0x8b);
+
+typedef NTSTATUS
+(NTAPI *PCARDBUSADD)(
+  IN PDEVICE_OBJECT DeviceObject,
+  IN OUT PVOID *DeviceContext);
+
+typedef NTSTATUS
+(NTAPI *PCARDBUSDELETE)(
+  IN PVOID DeviceContext);
+
+typedef NTSTATUS
+(NTAPI *PCARDBUSPCIDISPATCH)(
+  IN PVOID DeviceContext,
+  IN PIRP Irp);
+
+typedef VOID
+(NTAPI *PPME_SET_PME_ENABLE)(
+  IN PDEVICE_OBJECT Pdo,
+  IN BOOLEAN PmeEnable);
+
+typedef VOID
+(NTAPI *PPME_CLEAR_PME_STATUS)(
+  IN PDEVICE_OBJECT Pdo);
+
+typedef VOID
+(NTAPI *PPME_GET_INFORMATION)(
+  IN PDEVICE_OBJECT Pdo,
+  OUT PBOOLEAN PmeCapable,
+  OUT PBOOLEAN PmeStatus,
+  OUT PBOOLEAN PmeEnable);
+
+typedef struct _PCI_CARDBUS_INTERFACE_PRIVATE {
+  USHORT Size;
+  USHORT Version;
+  PVOID Context;
+  PINTERFACE_REFERENCE InterfaceReference;
+  PINTERFACE_DEREFERENCE InterfaceDereference;
+  PDRIVER_OBJECT DriverObject;
+  PCARDBUSADD AddCardBus;
+  PCARDBUSDELETE DeleteCardBus;
+  PCARDBUSPCIDISPATCH DispatchPnp;
+} PCI_CARDBUS_INTERFACE_PRIVATE, *PPCI_CARDBUS_INTERFACE_PRIVATE;
+
+typedef struct _PCI_PME_INTERFACE {
+  USHORT Size;
+  USHORT Version;
+  PVOID Context;
+  PINTERFACE_REFERENCE InterfaceReference;
+  PINTERFACE_DEREFERENCE InterfaceDereference;
+  PPME_GET_INFORMATION GetPmeInformation;
+  PPME_CLEAR_PME_STATUS ClearPmeStatus;
+  PPME_SET_PME_ENABLE UpdateEnable;
+} PCI_PME_INTERFACE, *PPCI_PME_INTERFACE;
+
 /* Hardware Abstraction Layer Types */
 
 typedef BOOLEAN
@@ -3283,13 +3405,21 @@ ExFreeToZone(
 #define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
 #define ExReleaseResourceForThread ExReleaseResourceForThreadLite
 
-#ifdef _X86_
+#ifndef _M_IX86
+#define RESULT_ZERO     0
+#define RESULT_NEGATIVE 1
+#define RESULT_POSITIVE 2
+#endif
 
+#if defined(_X86_) || defined(_IA64_) || defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS)
 typedef enum _INTERLOCKED_RESULT {
   ResultNegative = RESULT_NEGATIVE,
   ResultZero = RESULT_ZERO,
   ResultPositive = RESULT_POSITIVE
 } INTERLOCKED_RESULT;
+#endif
+
+#ifdef _X86_
 
 NTKERNELAPI
 INTERLOCKED_RESULT
@@ -3309,6 +3439,7 @@ FASTCALL
 Exfi386InterlockedExchangeUlong(
   IN PULONG  Target,
   IN ULONG  Value);
+
 #endif