/*++ Copyright (c) 1998 Microsoft Corporation Module Name: findE980.h Environment: user mode Revision History: 08-08-00 : created, toddcar --*/ #include #include #include #include #include #include #include typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; typedef struct { PHYSICAL_ADDRESS Base; LARGE_INTEGER Length; ULONG Type; ULONG Reserved; } ACPI_E820_ENTRY, far *FPACPI_E820_ENTRY; typedef struct _ACPI_BIOS_MULTI_NODE { PHYSICAL_ADDRESS RsdtAddress; // 64-bit physical address of RSDT ULONG Count; ULONG Reserved; // don't use this. W2K depends on it being zero - oops ACPI_E820_ENTRY E820Entry[1]; } ACPI_BIOS_MULTI_NODE, *PACPI_BIOS_MULTI_NODE; typedef struct { USHORT Signature; USHORT CommandPortAddress; USHORT EventPortAddress; USHORT PollInterval; UCHAR CommandDataValue; UCHAR EventPortBitmask; UCHAR MaxLevelAc; UCHAR MaxLevelDc; } LEGACY_GEYSERVILLE_INT15, *PLEGACY_GEYSERVILLE_INT15; LONG AcpiFindRsdt ( PACPI_BIOS_MULTI_NODE *AcpiMulti ); LONG GetRegistryValue( HKEY KeyHandle, LPTSTR ValueName, PUCHAR *Information ); // // Taken from ntddk.h ... // #include "pshpack4.h" typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR { UCHAR Type; UCHAR ShareDisposition; USHORT Flags; union { // // Range of resources, inclusive. These are physical, bus relative. // It is known that Port and Memory below have the exact same layout // as Generic. // struct { PHYSICAL_ADDRESS Start; ULONG Length; } Generic; // // end_wdm // Range of port numbers, inclusive. These are physical, bus // relative. The value should be the same as the one passed to // HalTranslateBusAddress(). // begin_wdm // struct { PHYSICAL_ADDRESS Start; ULONG Length; } Port; // // end_wdm // IRQL and vector. Should be same values as were passed to // HalGetInterruptVector(). // begin_wdm // struct { ULONG Level; ULONG Vector; KAFFINITY Affinity; } Interrupt; // // Range of memory addresses, inclusive. These are physical, bus // relative. The value should be the same as the one passed to // HalTranslateBusAddress(). // struct { PHYSICAL_ADDRESS Start; // 64 bit physical addresses. ULONG Length; } Memory; // // Physical DMA channel. // struct { ULONG Channel; ULONG Port; ULONG Reserved1; } Dma; // // Device driver private data, usually used to help it figure // what the resource assignments decisions that were made. // struct { ULONG Data[3]; } DevicePrivate; // // Bus Number information. // struct { ULONG Start; ULONG Length; ULONG Reserved; } BusNumber; // // Device Specific information defined by the driver. // The DataSize field indicates the size of the data in bytes. The // data is located immediately after the DeviceSpecificData field in // the structure. // struct { ULONG DataSize; ULONG Reserved1; ULONG Reserved2; } DeviceSpecificData; } u; } CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR; #include "poppack.h" // // A Partial Resource List is what can be found in the ARC firmware // or will be generated by ntdetect.com. // The configuration manager will transform this structure into a Full // resource descriptor when it is about to store it in the regsitry. // // Note: There must a be a convention to the order of fields of same type, // (defined on a device by device basis) so that the fields can make sense // to a driver (i.e. when multiple memory ranges are necessary). // typedef struct _CM_PARTIAL_RESOURCE_LIST { USHORT Version; USHORT Revision; ULONG Count; CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]; } CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;