Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenhaltypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0098 00002 00003 Copyright (c) Alex Ionescu. All rights reserved. 00004 00005 Header Name: 00006 00007 haltypes.h 00008 00009 Abstract: 00010 00011 Type definitions for the HAL. 00012 00013 Author: 00014 00015 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006 00016 00017 --*/ 00018 00019 #ifndef _HALTYPES_H 00020 #define _HALTYPES_H 00021 00022 // 00023 // Dependencies 00024 // 00025 #include <umtypes.h> 00026 00027 #ifndef NTOS_MODE_USER 00028 00029 // 00030 // HalShutdownSystem Types 00031 // 00032 typedef enum _FIRMWARE_REENTRY 00033 { 00034 HalHaltRoutine, 00035 HalPowerDownRoutine, 00036 HalRestartRoutine, 00037 HalRebootRoutine, 00038 HalInteractiveModeRoutine, 00039 HalMaximumRoutine 00040 } FIRMWARE_REENTRY, *PFIRMWARE_REENTRY; 00041 00042 // 00043 // HAL Private function Types 00044 // 00045 typedef 00046 PBUS_HANDLER 00047 (FASTCALL *pHalHandlerForConfigSpace)( 00048 IN BUS_DATA_TYPE ConfigSpace, 00049 IN ULONG BusNumber 00050 ); 00051 00052 typedef 00053 NTSTATUS 00054 (NTAPI *PINSTALL_BUS_HANDLER)( 00055 IN PBUS_HANDLER Bus 00056 ); 00057 00058 typedef 00059 NTSTATUS 00060 (NTAPI *pHalRegisterBusHandler)( 00061 IN INTERFACE_TYPE InterfaceType, 00062 IN BUS_DATA_TYPE ConfigSpace, 00063 IN ULONG BusNumber, 00064 IN INTERFACE_TYPE ParentInterfaceType, 00065 IN ULONG ParentBusNumber, 00066 IN ULONG ContextSize, 00067 IN PINSTALL_BUS_HANDLER InstallCallback, 00068 OUT PBUS_HANDLER *BusHandler 00069 ); 00070 00071 typedef 00072 VOID 00073 (NTAPI *pHalSetWakeEnable)( 00074 IN BOOLEAN Enable 00075 ); 00076 00077 typedef 00078 VOID 00079 (NTAPI *pHalSetWakeAlarm)( 00080 IN ULONGLONG AlartTime, 00081 IN PTIME_FIELDS TimeFields 00082 ); 00083 00084 typedef 00085 VOID 00086 (NTAPI *pHalLocateHiberRanges)( 00087 IN PVOID MemoryMap 00088 ); 00089 00090 typedef 00091 NTSTATUS 00092 (NTAPI *pHalAllocateMapRegisters)( 00093 IN PADAPTER_OBJECT AdapterObject, 00094 IN ULONG Unknown, 00095 IN ULONG Unknown2, 00096 PMAP_REGISTER_ENTRY Registers 00097 ); 00098 00099 // 00100 // HAL Bus Handler Callback Types 00101 // 00102 typedef 00103 NTSTATUS 00104 (NTAPI *PADJUSTRESOURCELIST)( 00105 IN PBUS_HANDLER BusHandler, 00106 IN PBUS_HANDLER RootHandler, 00107 IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *Resources 00108 ); 00109 00110 typedef 00111 NTSTATUS 00112 (NTAPI *PASSIGNSLOTRESOURCES)( 00113 IN PBUS_HANDLER BusHandler, 00114 IN PBUS_HANDLER RootHandler, 00115 IN PUNICODE_STRING RegistryPath, 00116 IN PUNICODE_STRING DriverClassName, 00117 IN PDRIVER_OBJECT DriverObject, 00118 IN PDEVICE_OBJECT DeviceObject, 00119 IN ULONG SlotNumber, 00120 IN OUT PCM_RESOURCE_LIST *AllocatedResources 00121 ); 00122 00123 typedef 00124 ULONG 00125 (NTAPI *PGETSETBUSDATA)( 00126 IN PBUS_HANDLER BusHandler, 00127 IN PBUS_HANDLER RootHandler, 00128 IN ULONG SlotNumber, 00129 OUT PVOID Buffer, 00130 IN ULONG Offset, 00131 IN ULONG Length 00132 ); 00133 00134 typedef 00135 ULONG 00136 (NTAPI *PGETINTERRUPTVECTOR)( 00137 IN PBUS_HANDLER BusHandler, 00138 IN PBUS_HANDLER RootHandler, 00139 IN ULONG BusInterruptLevel, 00140 IN ULONG BusInterruptVector, 00141 OUT PKIRQL Irql, 00142 OUT PKAFFINITY Affinity 00143 ); 00144 00145 typedef 00146 BOOLEAN 00147 (NTAPI *PTRANSLATEBUSADDRESS)( 00148 IN PBUS_HANDLER BusHandler, 00149 IN PBUS_HANDLER RootHandler, 00150 IN PHYSICAL_ADDRESS BusAddress, 00151 IN OUT PULONG AddressSpace, 00152 OUT PPHYSICAL_ADDRESS TranslatedAddress 00153 ); 00154 00155 // 00156 // Hal Private dispatch Table 00157 // 00158 #define HAL_PRIVATE_DISPATCH_VERSION 2 00159 typedef struct _HAL_PRIVATE_DISPATCH 00160 { 00161 ULONG Version; 00162 pHalHandlerForBus HalHandlerForBus; 00163 pHalHandlerForConfigSpace HalHandlerForConfigSpace; 00164 pHalLocateHiberRanges HalLocateHiberRanges; 00165 pHalRegisterBusHandler HalRegisterBusHandler; 00166 pHalSetWakeEnable HalSetWakeEnable; 00167 pHalSetWakeAlarm HalSetWakeAlarm; 00168 pHalTranslateBusAddress HalPciTranslateBusAddress; 00169 pHalAssignSlotResources HalPciAssignSlotResources; 00170 pHalHaltSystem HalHaltSystem; 00171 pHalFindBusAddressTranslation HalFindBusAddressTranslation; 00172 pHalResetDisplay HalResetDisplay; 00173 pHalAllocateMapRegisters HalAllocateMapRegisters; 00174 pKdSetupPciDeviceForDebugging KdSetupPciDeviceForDebugging; 00175 pKdReleasePciDeviceForDebugging KdReleasePciDeviceforDebugging; 00176 pKdGetAcpiTablePhase0 KdGetAcpiTablePhase0; 00177 pKdCheckPowerButton KdCheckPowerButton; 00178 pHalVectorToIDTEntry HalVectorToIDTEntry; 00179 pKdMapPhysicalMemory64 KdMapPhysicalMemory64; 00180 pKdUnmapVirtualAddress KdUnmapVirtualAddress; 00181 #if (NTDDI_VERSION >= NTDDI_LONGHORN) 00182 pKdGetPciDataByOffset KdGetPciDataByOffset; 00183 pKdSetPciDataByOffset KdSetPciDataByOffset; 00184 PVOID HalGetInterruptVectorOverride; 00185 PVOID HalGetVectorInputOverride; 00186 #endif 00187 } HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH; 00188 00189 // 00190 // HAL Supported Range 00191 // 00192 #define HAL_SUPPORTED_RANGE_VERSION 1 00193 typedef struct _SUPPORTED_RANGE 00194 { 00195 struct _SUPPORTED_RANGE *Next; 00196 ULONG SystemAddressSpace; 00197 LONGLONG SystemBase; 00198 LONGLONG Base; 00199 LONGLONG Limit; 00200 } SUPPORTED_RANGE, *PSUPPORTED_RANGE; 00201 00202 typedef struct _SUPPORTED_RANGES 00203 { 00204 USHORT Version; 00205 BOOLEAN Sorted; 00206 UCHAR Reserved; 00207 ULONG NoIO; 00208 SUPPORTED_RANGE IO; 00209 ULONG NoMemory; 00210 SUPPORTED_RANGE Memory; 00211 ULONG NoPrefetchMemory; 00212 SUPPORTED_RANGE PrefetchMemory; 00213 ULONG NoDma; 00214 SUPPORTED_RANGE Dma; 00215 } SUPPORTED_RANGES, *PSUPPORTED_RANGES; 00216 00217 // 00218 // HAL Bus Handler 00219 // 00220 #define HAL_BUS_HANDLER_VERSION 1 00221 typedef struct _BUS_HANDLER 00222 { 00223 ULONG Version; 00224 INTERFACE_TYPE InterfaceType; 00225 BUS_DATA_TYPE ConfigurationType; 00226 ULONG BusNumber; 00227 PDEVICE_OBJECT DeviceObject; 00228 struct _BUS_HANDLER *ParentHandler; 00229 PVOID BusData; 00230 ULONG DeviceControlExtensionSize; 00231 PSUPPORTED_RANGES BusAddresses; 00232 ULONG Reserved[4]; 00233 PGETSETBUSDATA GetBusData; 00234 PGETSETBUSDATA SetBusData; 00235 PADJUSTRESOURCELIST AdjustResourceList; 00236 PASSIGNSLOTRESOURCES AssignSlotResources; 00237 PGETINTERRUPTVECTOR GetInterruptVector; 00238 PTRANSLATEBUSADDRESS TranslateBusAddress; 00239 PVOID Spare1; 00240 PVOID Spare2; 00241 PVOID Spare3; 00242 PVOID Spare4; 00243 PVOID Spare5; 00244 PVOID Spare6; 00245 PVOID Spare7; 00246 PVOID Spare8; 00247 } BUS_HANDLER; 00248 00249 // 00250 // HAL Chip Hacks 00251 // 00252 #define HAL_PCI_CHIP_HACK_BROKEN_ACPI_TIMER 0x01 00253 #define HAL_PCI_CHIP_HACK_DISABLE_HIBERNATE 0x02 00254 #define HAL_PCI_CHIP_HACK_DISABLE_ACPI_IRQ_ROUTING 0x04 00255 #define HAL_PCI_CHIP_HACK_USB_SMI_DISABLE 0x08 00256 00257 // 00258 // Kernel Exports 00259 // 00260 #if (defined(_NTDRIVER_) || defined(_NTHAL_)) && !defined(_BLDR_) 00261 extern NTSYSAPI PHAL_PRIVATE_DISPATCH HalPrivateDispatchTable; 00262 #define HALPRIVATEDISPATCH ((PHAL_PRIVATE_DISPATCH)&HalPrivateDispatchTable) 00263 #else 00264 extern NTSYSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable; 00265 #define HALPRIVATEDISPATCH (&HalPrivateDispatchTable) 00266 #endif 00267 00268 // 00269 // HAL Exports 00270 // 00271 extern PUCHAR NTHALAPI KdComPortInUse; 00272 00273 // 00274 // HAL Constants 00275 // 00276 #define HAL_IRQ_TRANSLATOR_VERSION 0x0 00277 00278 #endif 00279 #endif 00280 00281 00282 Generated on Sun May 27 2012 04:30:51 for ReactOS by
1.7.6.1
|