335 lines
6.2 KiB
C
335 lines
6.2 KiB
C
|
/*++ BUILD Version: 0001
|
||
|
|
||
|
Copyright (c) 1994 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
haldisp.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains the private structure definitions and APIs used by
|
||
|
the NT haldisp
|
||
|
|
||
|
Author:
|
||
|
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
//
|
||
|
// Strcuture definitions.
|
||
|
//
|
||
|
|
||
|
typedef struct _ADAPTER_OBJECT {
|
||
|
DMA_ADAPTER DmaAdapter;
|
||
|
PADAPTER_OBJECT RealAdapterObject;
|
||
|
}ADAPTER_OBJECT;
|
||
|
|
||
|
typedef struct _XHAL_WAIT_CONTEXT_BLOCK {
|
||
|
PMDL Mdl;
|
||
|
PVOID CurrentVa;
|
||
|
ULONG Length;
|
||
|
PADAPTER_OBJECT RealAdapterObject;
|
||
|
PDRIVER_LIST_CONTROL DriverExecutionRoutine;
|
||
|
PVOID DriverContext;
|
||
|
PIRP CurrentIrp;
|
||
|
ULONG MapRegisterLock;
|
||
|
UCHAR WriteToDevice;
|
||
|
UCHAR MdlCount;
|
||
|
PVOID MapRegisterBase[];
|
||
|
} XHAL_WAIT_CONTEXT_BLOCK, *PXHAL_WAIT_CONTEXT_BLOCK;
|
||
|
|
||
|
//
|
||
|
// Function prototypes
|
||
|
//
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalQuerySystemInformation(
|
||
|
IN HAL_QUERY_INFORMATION_CLASS InformationClass,
|
||
|
IN ULONG BufferSize,
|
||
|
OUT PVOID Buffer,
|
||
|
OUT PULONG ReturnedLength
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalSetSystemInformation(
|
||
|
IN HAL_SET_INFORMATION_CLASS InformationClass,
|
||
|
IN ULONG BufferSize,
|
||
|
OUT PVOID Buffer
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalQueryBusSlots(
|
||
|
IN PBUS_HANDLER BusHandler,
|
||
|
IN ULONG BufferSize,
|
||
|
OUT PULONG SlotNumbers,
|
||
|
OUT PULONG ReturnedLength
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalSetWakeEnable(
|
||
|
IN BOOLEAN Enable
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalSetWakeAlarm(
|
||
|
IN ULONGLONG WakeTime,
|
||
|
IN PTIME_FIELDS WakeTimeFields
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalLocateHiberRanges(
|
||
|
IN PVOID MemoryMap
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalRegisterBusHandler(
|
||
|
IN INTERFACE_TYPE InterfaceType,
|
||
|
IN BUS_DATA_TYPE ConfigurationSpace,
|
||
|
IN ULONG BusNumber,
|
||
|
IN INTERFACE_TYPE ParentBusType,
|
||
|
IN ULONG ParentBusNumber,
|
||
|
IN ULONG SizeofBusExtensionData,
|
||
|
IN PINSTALL_BUS_HANDLER InstallBusHandlers,
|
||
|
OUT PBUS_HANDLER *BusHandler
|
||
|
);
|
||
|
|
||
|
PBUS_HANDLER
|
||
|
FASTCALL
|
||
|
xHalHandlerForBus (
|
||
|
IN INTERFACE_TYPE InterfaceType,
|
||
|
IN ULONG BusNumber
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FASTCALL
|
||
|
xHalReferenceHandler (
|
||
|
IN PBUS_HANDLER Handler
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalInitPnpDriver(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalInitPowerManagement(
|
||
|
IN PPM_DISPATCH_TABLE PmDriverDispatchTable,
|
||
|
IN OUT PPM_DISPATCH_TABLE *PmHalDispatchTable
|
||
|
);
|
||
|
|
||
|
PDMA_ADAPTER
|
||
|
xHalGetDmaAdapter (
|
||
|
IN PVOID Context,
|
||
|
IN struct _DEVICE_DESCRIPTION *DeviceDescriptor,
|
||
|
OUT PULONG NumberOfMapRegisters
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalPutDmaAdapter (
|
||
|
PDMA_ADAPTER DmaAdapter
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
xHalAllocateCommonBuffer (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN ULONG Length,
|
||
|
OUT PPHYSICAL_ADDRESS LogicalAddress,
|
||
|
IN BOOLEAN CacheEnabled
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalFreeCommonBuffer (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN ULONG Length,
|
||
|
IN PHYSICAL_ADDRESS LogicalAddress,
|
||
|
IN PVOID VirtualAddress,
|
||
|
IN BOOLEAN CacheEnabled
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalAllocateAdapterChannel (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN PDEVICE_OBJECT DeviceObject,
|
||
|
IN ULONG NumberOfMapRegisters,
|
||
|
IN PDRIVER_CONTROL ExecutionRoutine,
|
||
|
IN PVOID Context
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
xHalFlushAdapterBuffers (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN PMDL Mdl,
|
||
|
IN PVOID MapRegisterBase,
|
||
|
IN PVOID CurrentVa,
|
||
|
IN ULONG Length,
|
||
|
IN BOOLEAN WriteToDevice
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalFreeAdapterChannel (
|
||
|
IN PDMA_ADAPTER DmaAdapter
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalFreeMapRegisters (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
PVOID MapRegisterBase,
|
||
|
ULONG NumberOfMapRegisters
|
||
|
);
|
||
|
|
||
|
PHYSICAL_ADDRESS
|
||
|
xHalMapTransfer (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN PMDL Mdl,
|
||
|
IN PVOID MapRegisterBase,
|
||
|
IN PVOID CurrentVa,
|
||
|
IN OUT PULONG Length,
|
||
|
IN BOOLEAN WriteToDevice
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
xHalGetDmaAlignment (
|
||
|
IN PDMA_ADAPTER DmaAdapter
|
||
|
);
|
||
|
|
||
|
ULONG
|
||
|
xHalReadDmaCounter (
|
||
|
IN PDMA_ADAPTER DmaAdapter
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalGetScatterGatherList (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN PDEVICE_OBJECT DeviceObject,
|
||
|
IN PMDL Mdl,
|
||
|
IN PVOID CurrentVa,
|
||
|
IN ULONG Length,
|
||
|
IN PDRIVER_LIST_CONTROL ExecutionRoutine,
|
||
|
IN PVOID Context,
|
||
|
IN BOOLEAN WriteToDevice
|
||
|
);
|
||
|
|
||
|
|
||
|
VOID
|
||
|
xHalPutScatterGatherList (
|
||
|
IN PDMA_ADAPTER DmaAdapter,
|
||
|
IN PSCATTER_GATHER_LIST ScatterGather,
|
||
|
IN BOOLEAN WriteToDevice
|
||
|
);
|
||
|
|
||
|
IO_ALLOCATION_ACTION
|
||
|
xHalpAllocateAdapterCallback (
|
||
|
IN struct _DEVICE_OBJECT *DeviceObject,
|
||
|
IN struct _IRP *Irp,
|
||
|
IN PVOID MapRegisterBase,
|
||
|
IN PVOID Context
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalGetInterruptTranslator(
|
||
|
IN INTERFACE_TYPE ParentInterfaceType,
|
||
|
IN ULONG ParentBusNumber,
|
||
|
IN INTERFACE_TYPE BridgeInterfaceType,
|
||
|
IN USHORT Size,
|
||
|
IN USHORT Version,
|
||
|
OUT PTRANSLATOR_INTERFACE Translator,
|
||
|
OUT PULONG BridgeBusNumber
|
||
|
);
|
||
|
|
||
|
BOOLEAN
|
||
|
xHalTranslateBusAddress(
|
||
|
IN INTERFACE_TYPE InterfaceType,
|
||
|
IN ULONG BusNumber,
|
||
|
IN PHYSICAL_ADDRESS BusAddress,
|
||
|
IN OUT PULONG AddressSpace,
|
||
|
OUT PPHYSICAL_ADDRESS TranslatedAddress
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalAssignSlotResources (
|
||
|
IN PUNICODE_STRING RegistryPath,
|
||
|
IN PUNICODE_STRING DriverClassName OPTIONAL,
|
||
|
IN PDRIVER_OBJECT DriverObject,
|
||
|
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
|
||
|
IN INTERFACE_TYPE BusType,
|
||
|
IN ULONG BusNumber,
|
||
|
IN ULONG SlotNumber,
|
||
|
IN OUT PCM_RESOURCE_LIST *AllocatedResources
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalHaltSystem(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalStartMirroring(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalEndMirroring(
|
||
|
IN ULONG PassNumber
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalMirrorPhysicalMemory(
|
||
|
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||
|
IN LARGE_INTEGER NumberOfBytes
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xHalMirrorVerify(
|
||
|
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||
|
IN LARGE_INTEGER NumberOfBytes
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xKdSetupPciDeviceForDebugging(
|
||
|
IN PVOID LoaderBlock, OPTIONAL
|
||
|
IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
|
||
|
);
|
||
|
|
||
|
NTSTATUS
|
||
|
xKdReleasePciDeviceForDebugging(
|
||
|
IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
xKdGetAcpiTablePhase0(
|
||
|
IN PLOADER_PARAMETER_BLOCK LoaderBlock,
|
||
|
IN ULONG Signature
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xKdCheckPowerButton(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xHalEndOfBoot(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
UCHAR
|
||
|
xHalVectorToIDTEntry(
|
||
|
ULONG Vector
|
||
|
);
|
||
|
|
||
|
PVOID
|
||
|
xKdMapPhysicalMemory64(
|
||
|
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||
|
IN ULONG NumberPages
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
xKdUnmapVirtualAddress(
|
||
|
IN PVOID VirtualAddress,
|
||
|
IN ULONG NumberPages
|
||
|
);
|
||
|
|