5 #ifndef __INTERNAL_HAL_BUS_H
6 #define __INTERNAL_HAL_BUS_H
10 typedef NTSTATUS (STDCALL *pAdjustResourceList) (
11 IN struct _BUS_HANDLER *BusHandler,
13 IN OUT PCM_RESOURCE_LIST Resources
16 typedef NTSTATUS (STDCALL *pAssignSlotResources) (
17 IN struct _BUS_HANDLER *BusHandler,
19 IN PUNICODE_STRING RegistryPath,
20 IN PUNICODE_STRING DriverClassName,
21 IN PDRIVER_OBJECT DriverObject,
22 IN PDEVICE_OBJECT DeviceObject,
24 IN OUT PCM_RESOURCE_LIST *AllocatedResources
27 typedef ULONG (STDCALL *pGetSetBusData) (
28 IN struct _BUS_HANDLER *BusHandler,
36 typedef ULONG (STDCALL *pGetInterruptVector) (
37 IN struct _BUS_HANDLER *BusHandler,
39 IN ULONG BusInterruptLevel,
40 IN ULONG BusInterruptVector,
42 OUT PKAFFINITY Affinity
45 typedef ULONG (STDCALL *pTranslateBusAddress) (
46 IN struct _BUS_HANDLER *BusHandler,
48 IN PHYSICAL_ADDRESS BusAddress,
49 IN OUT PULONG AddressSpace,
50 OUT PPHYSICAL_ADDRESS TranslatedAddress
53 typedef struct _BUS_HANDLER
56 INTERFACE_TYPE InterfaceType;
57 BUS_DATA_TYPE BusDataType;
61 pGetSetBusData GetBusData;
62 pGetSetBusData SetBusData;
63 pAdjustResourceList AdjustResourceList;
64 pAssignSlotResources AssignSlotResources;
65 pGetInterruptVector GetInterruptVector;
66 pTranslateBusAddress TranslateBusAddress;
67 } BUS_HANDLER, *PBUS_HANDLER;
70 /* FUNCTIONS *****************************************************************/
74 HalpAllocateBusHandler(INTERFACE_TYPE InterfaceType,
75 BUS_DATA_TYPE BusDataType,
80 HalpGetSystemInterruptVector(PVOID BusHandler,
82 ULONG BusInterruptLevel,
83 ULONG BusInterruptVector,
88 HalpTranslateSystemBusAddress(PBUS_HANDLER BusHandler,
90 PHYSICAL_ADDRESS BusAddress,
92 PPHYSICAL_ADDRESS TranslatedAddress);
96 HalpTranslateIsaBusAddress(PBUS_HANDLER BusHandler,
98 PHYSICAL_ADDRESS BusAddress,
100 PPHYSICAL_ADDRESS TranslatedAddress);
104 HalpGetCmosData(PBUS_HANDLER BusHandler,
112 HalpSetCmosData(PBUS_HANDLER BusHandler,
119 #endif /* __INTERNAL_HAL_BUS_H */