2 * PROJECT: ReactOS Storport Driver
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Storport driver common header file
5 * COPYRIGHT: Copyright 2017 Eric Kohl (eric.kohl@reactos.org)
16 /* Declare STORPORT_API functions as exports rather than imports */
26 #define TAG_GLOBAL_DATA 'DGtS'
27 #define TAG_INIT_DATA 'DItS'
28 #define TAG_MINIPORT_DATA 'DMtS'
29 #define TAG_ACCRESS_RANGE 'RAtS'
30 #define TAG_RESOURCE_LIST 'LRtS'
31 #define TAG_ADDRESS_MAPPING 'MAtS'
50 typedef struct _DRIVER_INIT_DATA
53 HW_INITIALIZATION_DATA HwInitData
;
54 } DRIVER_INIT_DATA
, *PDRIVER_INIT_DATA
;
56 typedef struct _DRIVER_OBJECT_EXTENSION
58 EXTENSION_TYPE ExtensionType
;
59 PDRIVER_OBJECT DriverObject
;
61 KSPIN_LOCK AdapterListLock
;
62 LIST_ENTRY AdapterListHead
;
65 LIST_ENTRY InitDataListHead
;
66 } DRIVER_OBJECT_EXTENSION
, *PDRIVER_OBJECT_EXTENSION
;
68 typedef struct _MINIPORT_DEVICE_EXTENSION
70 struct _MINIPORT
*Miniport
;
71 UCHAR HwDeviceExtension
[0];
72 } MINIPORT_DEVICE_EXTENSION
, *PMINIPORT_DEVICE_EXTENSION
;
74 typedef struct _MINIPORT
76 struct _FDO_DEVICE_EXTENSION
*DeviceExtension
;
77 PHW_INITIALIZATION_DATA InitData
;
78 PORT_CONFIGURATION_INFORMATION PortConfig
;
79 PMINIPORT_DEVICE_EXTENSION MiniportExtension
;
80 } MINIPORT
, *PMINIPORT
;
82 typedef struct _FDO_DEVICE_EXTENSION
84 EXTENSION_TYPE ExtensionType
;
86 PDEVICE_OBJECT Device
;
87 PDEVICE_OBJECT LowerDevice
;
88 PDEVICE_OBJECT PhysicalDevice
;
89 PDRIVER_OBJECT_EXTENSION DriverExtension
;
90 DEVICE_STATE PnpState
;
91 LIST_ENTRY AdapterListEntry
;
95 PCM_RESOURCE_LIST AllocatedResources
;
96 PCM_RESOURCE_LIST TranslatedResources
;
97 BUS_INTERFACE_STANDARD BusInterface
;
98 BOOLEAN BusInitialized
;
99 PMAPPED_ADDRESS MappedAddressList
;
100 } FDO_DEVICE_EXTENSION
, *PFDO_DEVICE_EXTENSION
;
103 typedef struct _PDO_DEVICE_EXTENSION
105 EXTENSION_TYPE ExtensionType
;
107 PDEVICE_OBJECT AttachedFdo
;
109 DEVICE_STATE PnpState
;
111 } PDO_DEVICE_EXTENSION
, *PPDO_DEVICE_EXTENSION
;
119 _In_ PDEVICE_OBJECT DeviceObject
,
127 _In_ PMINIPORT Miniport
,
128 _In_ PFDO_DEVICE_EXTENSION DeviceExtension
,
129 _In_ PHW_INITIALIZATION_DATA HwInitializationData
);
133 _In_ PMINIPORT Miniport
);
136 MiniportHwInitialize(
137 _In_ PMINIPORT Miniport
);
144 _In_ PDEVICE_OBJECT LowerDevice
,
150 _In_ PDEVICE_OBJECT LowerDevice
,
155 PDEVICE_OBJECT DeviceObject
);
160 PCM_RESOURCE_LIST Source
);
164 PDEVICE_OBJECT DeviceObject
,
168 PBUS_INTERFACE_STANDARD Interface
,
169 PVOID InterfaceSpecificData
);
172 TranslateResourceListAddress(
173 PFDO_DEVICE_EXTENSION DeviceExtension
,
174 INTERFACE_TYPE BusType
,
175 ULONG SystemIoBusNumber
,
176 STOR_PHYSICAL_ADDRESS IoAddress
,
179 PPHYSICAL_ADDRESS TranslatedAddress
);
182 AllocateAddressMapping(
183 PMAPPED_ADDRESS
*MappedAddressList
,
184 STOR_PHYSICAL_ADDRESS IoAddress
,
194 _In_ PDEVICE_OBJECT DeviceObject
,
200 PHW_INITIALIZATION_DATA
201 PortGetDriverInitData(
202 PDRIVER_OBJECT_EXTENSION DriverExtension
,
203 INTERFACE_TYPE InterfaceType
);
208 _In_ PDRIVER_OBJECT DriverObject
,
209 _In_ PUNICODE_STRING RegistryPath
);
211 #endif /* _STORPORT_PCH_ */