00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#if defined(NO_LEGACY_DRIVERS)
00023
#define xHalIoAssignDriveLetters IoAssignDriveLetters
00024
#define xHalIoReadPartitionTable IoReadPartitionTable
00025
#define xHalIoSetPartitionInformation IoSetPartitionInformation
00026
#define xHalIoWritePartitionTable IoWritePartitionTable
00027
#endif // NO_LEGACY_DRIVERS
00028
00029
00030
00031
00032
00033 typedef struct _ADAPTER_OBJECT {
00034 DMA_ADAPTER DmaAdapter;
00035 PADAPTER_OBJECT RealAdapterObject;
00036 }
ADAPTER_OBJECT;
00037
00038 typedef struct _XHAL_WAIT_CONTEXT_BLOCK {
00039 PMDL Mdl;
00040 PVOID
CurrentVa;
00041 ULONG
Length;
00042 PADAPTER_OBJECT RealAdapterObject;
00043 PDRIVER_LIST_CONTROL DriverExecutionRoutine;
00044 PVOID
DriverContext;
00045 PIRP CurrentIrp;
00046 ULONG
MapRegisterLock;
00047 UCHAR
WriteToDevice;
00048 UCHAR
MdlCount;
00049 PVOID
MapRegisterBase[];
00050 }
XHAL_WAIT_CONTEXT_BLOCK, *
PXHAL_WAIT_CONTEXT_BLOCK;
00051
00052
00053
00054
00055
00056
NTSTATUS
00057
xHalQuerySystemInformation(
00058 IN HAL_QUERY_INFORMATION_CLASS InformationClass,
00059 IN ULONG BufferSize,
00060 OUT PVOID Buffer,
00061 OUT PULONG ReturnedLength
00062 );
00063
00064
NTSTATUS
00065
xHalSetSystemInformation(
00066 IN HAL_SET_INFORMATION_CLASS InformationClass,
00067 IN ULONG BufferSize,
00068 OUT PVOID Buffer
00069 );
00070
00071
NTSTATUS
00072
xHalQueryBusSlots(
00073 IN
PBUS_HANDLER BusHandler,
00074 IN ULONG BufferSize,
00075 OUT PULONG SlotNumbers,
00076 OUT PULONG ReturnedLength
00077 );
00078
00079
VOID
00080
xHalSetWakeEnable(
00081 IN BOOLEAN Enable
00082 );
00083
00084
VOID
00085
xHalSetWakeAlarm(
00086 IN ULONGLONG WakeTime,
00087 IN PTIME_FIELDS WakeTimeFields
00088 );
00089
00090
VOID
00091
xHalLocateHiberRanges(
00092 IN PVOID MemoryMap
00093 );
00094
00095
NTSTATUS
00096
xHalRegisterBusHandler(
00097 IN INTERFACE_TYPE InterfaceType,
00098 IN BUS_DATA_TYPE ConfigurationSpace,
00099 IN ULONG BusNumber,
00100 IN INTERFACE_TYPE ParentBusType,
00101 IN ULONG ParentBusNumber,
00102 IN ULONG SizeofBusExtensionData,
00103 IN PINSTALL_BUS_HANDLER InstallBusHandlers,
00104 OUT
PBUS_HANDLER *BusHandler
00105 );
00106
00107
PBUS_HANDLER
00108
FASTCALL
00109
xHalHandlerForBus (
00110 IN INTERFACE_TYPE InterfaceType,
00111 IN ULONG BusNumber
00112 );
00113
00114
VOID
00115
FASTCALL
00116
xHalExamineMBR(
00117 IN
PDEVICE_OBJECT DeviceObject,
00118 IN ULONG SectorSize,
00119 IN ULONG MBRTypeIdentifier,
00120 OUT PVOID *Buffer
00121 );
00122
00123
VOID
00124
FASTCALL
00125
xHalIoAssignDriveLetters(
00126 IN
struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
00127 IN PSTRING NtDeviceName,
00128 OUT PUCHAR NtSystemPath,
00129 OUT PSTRING NtSystemPathString
00130 );
00131
00132
NTSTATUS
00133
FASTCALL
00134
xHalIoReadPartitionTable(
00135 IN
PDEVICE_OBJECT DeviceObject,
00136 IN ULONG SectorSize,
00137 IN BOOLEAN ReturnRecognizedPartitions,
00138 OUT
struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer
00139 );
00140
00141
NTSTATUS
00142
FASTCALL
00143
xHalIoSetPartitionInformation(
00144 IN
PDEVICE_OBJECT DeviceObject,
00145 IN ULONG SectorSize,
00146 IN ULONG PartitionNumber,
00147 IN ULONG PartitionType
00148 );
00149
00150
NTSTATUS
00151
FASTCALL
00152
xHalIoWritePartitionTable(
00153 IN
PDEVICE_OBJECT DeviceObject,
00154 IN ULONG SectorSize,
00155 IN ULONG SectorsPerTrack,
00156 IN ULONG NumberOfHeads,
00157 IN
struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer
00158 );
00159
00160
00161
VOID
00162
FASTCALL
00163
xHalReferenceHandler (
00164 IN
PBUS_HANDLER Handler
00165 );
00166
00167
NTSTATUS
00168
xHalInitPnpDriver(
00169 VOID
00170 );
00171
00172
NTSTATUS
00173
xHalInitPowerManagement(
00174 IN
PPM_DISPATCH_TABLE PmDriverDispatchTable,
00175 IN OUT
PPM_DISPATCH_TABLE *PmHalDispatchTable
00176 );
00177
00178
PDMA_ADAPTER
00179
xHalGetDmaAdapter (
00180 IN PVOID Context,
00181 IN
struct _DEVICE_DESCRIPTION *DeviceDescriptor,
00182 OUT PULONG NumberOfMapRegisters
00183 );
00184
00185
VOID
00186
xHalPutDmaAdapter (
00187
PDMA_ADAPTER DmaAdapter
00188 );
00189
00190 PVOID
00191
xHalAllocateCommonBuffer (
00192 IN
PDMA_ADAPTER DmaAdapter,
00193 IN ULONG Length,
00194 OUT PPHYSICAL_ADDRESS LogicalAddress,
00195 IN BOOLEAN CacheEnabled
00196 );
00197
00198
VOID
00199
xHalFreeCommonBuffer (
00200 IN
PDMA_ADAPTER DmaAdapter,
00201 IN ULONG Length,
00202 IN PHYSICAL_ADDRESS LogicalAddress,
00203 IN PVOID VirtualAddress,
00204 IN BOOLEAN CacheEnabled
00205 );
00206
00207
NTSTATUS
00208
xHalAllocateAdapterChannel (
00209 IN
PDMA_ADAPTER DmaAdapter,
00210 IN
PDEVICE_OBJECT DeviceObject,
00211 IN ULONG NumberOfMapRegisters,
00212 IN PDRIVER_CONTROL ExecutionRoutine,
00213 IN PVOID Context
00214 );
00215
00216 BOOLEAN
00217
xHalFlushAdapterBuffers (
00218 IN
PDMA_ADAPTER DmaAdapter,
00219 IN
PMDL Mdl,
00220 IN PVOID MapRegisterBase,
00221 IN PVOID CurrentVa,
00222 IN ULONG Length,
00223 IN BOOLEAN WriteToDevice
00224 );
00225
00226
VOID
00227
xHalFreeAdapterChannel (
00228 IN
PDMA_ADAPTER DmaAdapter
00229 );
00230
00231
VOID
00232
xHalFreeMapRegisters (
00233 IN
PDMA_ADAPTER DmaAdapter,
00234 PVOID MapRegisterBase,
00235 ULONG NumberOfMapRegisters
00236 );
00237
00238 PHYSICAL_ADDRESS
00239
xHalMapTransfer (
00240 IN
PDMA_ADAPTER DmaAdapter,
00241 IN
PMDL Mdl,
00242 IN PVOID MapRegisterBase,
00243 IN PVOID CurrentVa,
00244 IN OUT PULONG Length,
00245 IN BOOLEAN WriteToDevice
00246 );
00247
00248 ULONG
00249
xHalGetDmaAlignment (
00250 IN
PDMA_ADAPTER DmaAdapter
00251 );
00252
00253 ULONG
00254
xHalReadDmaCounter (
00255 IN
PDMA_ADAPTER DmaAdapter
00256 );
00257
00258
NTSTATUS
00259
xHalGetScatterGatherList (
00260 IN
PDMA_ADAPTER DmaAdapter,
00261 IN
PDEVICE_OBJECT DeviceObject,
00262 IN
PMDL Mdl,
00263 IN PVOID CurrentVa,
00264 IN ULONG Length,
00265 IN PDRIVER_LIST_CONTROL ExecutionRoutine,
00266 IN PVOID Context,
00267 IN BOOLEAN WriteToDevice
00268 );
00269
00270
00271
VOID
00272
xHalPutScatterGatherList (
00273 IN
PDMA_ADAPTER DmaAdapter,
00274 IN
PSCATTER_GATHER_LIST ScatterGather,
00275 IN BOOLEAN WriteToDevice
00276 );
00277
00278
IO_ALLOCATION_ACTION
00279
xHalpAllocateAdapterCallback (
00280 IN
struct _DEVICE_OBJECT *DeviceObject,
00281 IN
struct _IRP *Irp,
00282 IN PVOID MapRegisterBase,
00283 IN PVOID Context
00284 );
00285
00286
NTSTATUS
00287
xHalGetInterruptTranslator(
00288 IN INTERFACE_TYPE ParentInterfaceType,
00289 IN ULONG ParentBusNumber,
00290 IN INTERFACE_TYPE BridgeInterfaceType,
00291 IN USHORT Size,
00292 IN USHORT Version,
00293 OUT
PTRANSLATOR_INTERFACE Translator,
00294 OUT PULONG BridgeBusNumber
00295 );
00296
00297 BOOLEAN
00298
xHalTranslateBusAddress(
00299 IN INTERFACE_TYPE InterfaceType,
00300 IN ULONG BusNumber,
00301 IN PHYSICAL_ADDRESS BusAddress,
00302 IN OUT PULONG AddressSpace,
00303 OUT PPHYSICAL_ADDRESS TranslatedAddress
00304 );
00305
00306
NTSTATUS
00307
xHalAssignSlotResources (
00308 IN PUNICODE_STRING RegistryPath,
00309 IN PUNICODE_STRING DriverClassName OPTIONAL,
00310 IN
PDRIVER_OBJECT DriverObject,
00311 IN
PDEVICE_OBJECT DeviceObject OPTIONAL,
00312 IN INTERFACE_TYPE BusType,
00313 IN ULONG BusNumber,
00314 IN ULONG SlotNumber,
00315 IN OUT PCM_RESOURCE_LIST *AllocatedResources
00316 );
00317
00318
VOID
00319
xHalHaltSystem(
00320 VOID
00321 );
00322