Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenhal.h
Go to the documentation of this file.
00001 /* 00002 * PROJECT: ReactOS Kernel 00003 * LICENSE: GPL - See COPYING in the top level directory 00004 * FILE: ntoskrnl/include/hal.h 00005 * PURPOSE: Internal header for the I/O HAL Functions (Fstub) 00006 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) 00007 * Pierre Schweitzer (pierre.schweitzer@reactos.org) 00008 */ 00009 00010 #pragma once 00011 00012 // 00013 // Default implementations of HAL dispatch table 00014 // 00015 VOID 00016 FASTCALL 00017 xHalExamineMBR(IN PDEVICE_OBJECT DeviceObject, 00018 IN ULONG SectorSize, 00019 IN ULONG MbrTypeIdentifier, 00020 OUT PVOID *MbrBuffer); 00021 00022 VOID 00023 FASTCALL 00024 xHalIoAssignDriveLetters(IN PLOADER_PARAMETER_BLOCK LoaderBlock, 00025 IN PSTRING NtDeviceName, 00026 OUT PUCHAR NtSystemPath, 00027 OUT PSTRING NtSystemPathString); 00028 00029 NTSTATUS 00030 FASTCALL 00031 xHalIoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject, 00032 IN ULONG SectorSize, 00033 IN BOOLEAN ReturnRecognizedPartitions, 00034 IN OUT PDRIVE_LAYOUT_INFORMATION *PartitionBuffer); 00035 00036 NTSTATUS 00037 FASTCALL 00038 xHalIoSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject, 00039 IN ULONG SectorSize, 00040 IN ULONG PartitionNumber, 00041 IN ULONG PartitionType); 00042 00043 NTSTATUS 00044 FASTCALL 00045 xHalIoWritePartitionTable(IN PDEVICE_OBJECT DeviceObject, 00046 IN ULONG SectorSize, 00047 IN ULONG SectorsPerTrack, 00048 IN ULONG NumberOfHeads, 00049 IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer); 00050 00051 VOID 00052 NTAPI 00053 xHalHaltSystem( 00054 VOID 00055 ); 00056 00057 VOID 00058 NTAPI 00059 xHalEndOfBoot( 00060 VOID 00061 ); 00062 00063 VOID 00064 NTAPI 00065 xHalSetWakeEnable( 00066 IN BOOLEAN Enable 00067 ); 00068 00069 UCHAR 00070 NTAPI 00071 xHalVectorToIDTEntry( 00072 IN ULONG Vector 00073 ); 00074 00075 NTSTATUS 00076 NTAPI 00077 xHalGetInterruptTranslator( 00078 IN INTERFACE_TYPE ParentInterfaceType, 00079 IN ULONG ParentBusNumber, 00080 IN INTERFACE_TYPE BridgeInterfaceType, 00081 IN USHORT Size, 00082 IN USHORT Version, 00083 OUT PTRANSLATOR_INTERFACE Translator, 00084 OUT PULONG BridgeBusNumber 00085 ); 00086 00087 PBUS_HANDLER 00088 FASTCALL 00089 xHalHandlerForBus( 00090 IN INTERFACE_TYPE InterfaceType, 00091 IN ULONG BusNumber 00092 ); 00093 00094 VOID 00095 FASTCALL 00096 xHalReferenceHandler( 00097 IN PBUS_HANDLER BusHandler 00098 ); 00099 00100 NTSTATUS 00101 NTAPI 00102 xHalInitPnpDriver( 00103 VOID 00104 ); 00105 00106 NTSTATUS 00107 NTAPI 00108 xHalInitPowerManagement( 00109 IN PPM_DISPATCH_TABLE PmDriverDispatchTable, 00110 OUT PPM_DISPATCH_TABLE *PmHalDispatchTable 00111 ); 00112 00113 NTSTATUS 00114 NTAPI 00115 xHalStartMirroring( 00116 VOID 00117 ); 00118 00119 NTSTATUS 00120 NTAPI 00121 xHalEndMirroring( 00122 IN ULONG PassNumber 00123 ); 00124 00125 NTSTATUS 00126 NTAPI 00127 xHalMirrorPhysicalMemory( 00128 IN PHYSICAL_ADDRESS PhysicalAddress, 00129 IN LARGE_INTEGER NumberOfBytes 00130 ); 00131 00132 NTSTATUS 00133 NTAPI 00134 xHalQueryBusSlots( 00135 IN PBUS_HANDLER BusHandler, 00136 IN ULONG BufferSize, 00137 OUT PULONG SlotNumbers, 00138 OUT PULONG ReturnedLength 00139 ); 00140 00141 NTSTATUS 00142 NTAPI 00143 xHalSetSystemInformation( 00144 IN HAL_SET_INFORMATION_CLASS InformationClass, 00145 IN ULONG BufferSize, 00146 IN PVOID Buffer 00147 ); 00148 00149 NTSTATUS 00150 NTAPI 00151 xHalQuerySystemInformation( 00152 IN HAL_QUERY_INFORMATION_CLASS InformationClass, 00153 IN ULONG BufferSize, 00154 IN OUT PVOID Buffer, 00155 OUT PULONG ReturnedLength 00156 ); 00157 00158 VOID 00159 NTAPI 00160 xHalLocateHiberRanges( 00161 IN PVOID MemoryMap 00162 ); 00163 00164 NTSTATUS 00165 NTAPI 00166 xHalRegisterBusHandler( 00167 IN INTERFACE_TYPE InterfaceType, 00168 IN BUS_DATA_TYPE ConfigSpace, 00169 IN ULONG BusNumber, 00170 IN INTERFACE_TYPE ParentInterfaceType, 00171 IN ULONG ParentBusNumber, 00172 IN ULONG ContextSize, 00173 IN PINSTALL_BUS_HANDLER InstallCallback, 00174 OUT PBUS_HANDLER *BusHandler 00175 ); 00176 00177 VOID 00178 NTAPI 00179 xHalSetWakeAlarm( 00180 IN ULONGLONG AlartTime, 00181 IN PTIME_FIELDS TimeFields 00182 ); 00183 00184 BOOLEAN 00185 NTAPI 00186 xHalTranslateBusAddress( 00187 IN INTERFACE_TYPE InterfaceType, 00188 IN ULONG BusNumber, 00189 IN PHYSICAL_ADDRESS BusAddress, 00190 IN OUT PULONG AddressSpace, 00191 OUT PPHYSICAL_ADDRESS TranslatedAddress 00192 ); 00193 00194 NTSTATUS 00195 NTAPI 00196 xHalAllocateMapRegisters( 00197 IN PADAPTER_OBJECT AdapterObject, 00198 IN ULONG Unknown, 00199 IN ULONG Unknown2, 00200 PMAP_REGISTER_ENTRY Registers 00201 ); 00202 00203 NTSTATUS 00204 NTAPI 00205 xKdSetupPciDeviceForDebugging( 00206 IN PVOID LoaderBlock OPTIONAL, 00207 IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice 00208 ); 00209 00210 NTSTATUS 00211 NTAPI 00212 xKdReleasePciDeviceForDebugging( 00213 IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice 00214 ); 00215 00216 PVOID 00217 NTAPI 00218 xKdGetAcpiTablePhase( 00219 IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock, 00220 IN ULONG Signature 00221 ); 00222 00223 PVOID 00224 NTAPI 00225 MatchAll( 00226 IN PHYSICAL_ADDRESS PhysicalAddress, 00227 IN ULONG NumberPages, 00228 IN BOOLEAN FlushCurrentTLB 00229 ); 00230 00231 VOID 00232 NTAPI 00233 xKdUnmapVirtualAddress( 00234 IN PVOID VirtualAddress, 00235 IN ULONG NumberPages, 00236 IN BOOLEAN FlushCurrentTLB 00237 ); 00238 00239 00240 // 00241 // Various offsets in the boot record 00242 // 00243 #define PARTITION_TABLE_OFFSET (0x1BE / 2) 00244 #define BOOT_SIGNATURE_OFFSET ((0x200 / 2) - 1) 00245 #define BOOT_RECORD_RESERVED 0x1BC 00246 #define BOOT_RECORD_SIGNATURE 0xAA55 00247 #define NUM_PARTITION_TABLE_ENTRIES 4 00248 00249 // 00250 // Helper Macros 00251 // 00252 #define GET_STARTING_SECTOR(p) \ 00253 ((ULONG)(p->StartingSectorLsb0) + \ 00254 (ULONG)(p->StartingSectorLsb1 << 8 ) + \ 00255 (ULONG)(p->StartingSectorMsb0 << 16) + \ 00256 (ULONG)(p->StartingSectorMsb1 << 24)) 00257 00258 #define GET_ENDING_S_OF_CHS(p) \ 00259 ((UCHAR)(p->EndingCylinderLsb & 0x3F)) 00260 00261 #define GET_PARTITION_LENGTH(p) \ 00262 ((ULONG)(p->PartitionLengthLsb0) + \ 00263 (ULONG)(p->PartitionLengthLsb1 << 8) + \ 00264 (ULONG)(p->PartitionLengthMsb0 << 16) + \ 00265 (ULONG)(p->PartitionLengthMsb1 << 24)) 00266 00267 #define SET_PARTITION_LENGTH(p, l) \ 00268 p->PartitionLengthLsb0 = l & 0xFF; \ 00269 p->PartitionLengthLsb1 = (l >> 8) & 0xFF; \ 00270 p->PartitionLengthMsb0 = (l >> 16) & 0xFF; \ 00271 p->PartitionLengthMsb1 = (l >> 24) & 0xFF 00272 00273 // 00274 // Structure describing a partition 00275 // 00276 typedef struct _PARTITION_DESCRIPTOR 00277 { 00278 UCHAR ActiveFlag; 00279 UCHAR StartingTrack; 00280 UCHAR StartingCylinderLsb; 00281 UCHAR StartingCylinderMsb; 00282 UCHAR PartitionType; 00283 UCHAR EndingTrack; 00284 UCHAR EndingCylinderLsb; 00285 UCHAR EndingCylinderMsb; 00286 UCHAR StartingSectorLsb0; 00287 UCHAR StartingSectorLsb1; 00288 UCHAR StartingSectorMsb0; 00289 UCHAR StartingSectorMsb1; 00290 UCHAR PartitionLengthLsb0; 00291 UCHAR PartitionLengthLsb1; 00292 UCHAR PartitionLengthMsb0; 00293 UCHAR PartitionLengthMsb1; 00294 } PARTITION_DESCRIPTOR, *PPARTITION_DESCRIPTOR; 00295 00296 // 00297 // Structure describing a boot sector 00298 // 00299 typedef struct _BOOT_SECTOR_INFO 00300 { 00301 UCHAR JumpByte[1]; 00302 UCHAR Ignore1[2]; 00303 UCHAR OemData[8]; 00304 UCHAR BytesPerSector[2]; 00305 UCHAR Ignore2[6]; 00306 UCHAR NumberOfSectors[2]; 00307 UCHAR MediaByte[1]; 00308 UCHAR Ignore3[2]; 00309 UCHAR SectorsPerTrack[2]; 00310 UCHAR NumberOfHeads[2]; 00311 } BOOT_SECTOR_INFO, *PBOOT_SECTOR_INFO; 00312 00313 // 00314 // Partition Table and Disk Layout 00315 // 00316 typedef struct _PARTITION_TABLE 00317 { 00318 PARTITION_INFORMATION PartitionEntry[4]; 00319 } PARTITION_TABLE, *PPARTITION_TABLE; 00320 00321 typedef struct _DISK_LAYOUT 00322 { 00323 ULONG TableCount; 00324 ULONG Signature; 00325 PARTITION_TABLE PartitionTable[1]; 00326 } DISK_LAYOUT, *PDISK_LAYOUT; 00327 00328 // 00329 // Partition Table Entry 00330 // 00331 typedef struct _PTE 00332 { 00333 UCHAR ActiveFlag; 00334 UCHAR StartingTrack; 00335 USHORT StartingCylinder; 00336 UCHAR PartitionType; 00337 UCHAR EndingTrack; 00338 USHORT EndingCylinder; 00339 ULONG StartingSector; 00340 ULONG PartitionLength; 00341 } PTE, *PPTE; Generated on Sat May 26 2012 04:27:17 for ReactOS by
1.7.6.1
|