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 */