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 PVOID UncachedExtensionVirtualBase
;
101 PHYSICAL_ADDRESS UncachedExtensionPhysicalBase
;
102 ULONG UncachedExtensionSize
;
104 } FDO_DEVICE_EXTENSION
, *PFDO_DEVICE_EXTENSION
;
107 typedef struct _PDO_DEVICE_EXTENSION
109 EXTENSION_TYPE ExtensionType
;
111 PDEVICE_OBJECT AttachedFdo
;
113 DEVICE_STATE PnpState
;
115 } PDO_DEVICE_EXTENSION
, *PPDO_DEVICE_EXTENSION
;
123 _In_ PDEVICE_OBJECT DeviceObject
,
131 _In_ PMINIPORT Miniport
,
132 _In_ PFDO_DEVICE_EXTENSION DeviceExtension
,
133 _In_ PHW_INITIALIZATION_DATA HwInitializationData
);
137 _In_ PMINIPORT Miniport
);
140 MiniportHwInitialize(
141 _In_ PMINIPORT Miniport
);
148 _In_ PDEVICE_OBJECT LowerDevice
,
154 _In_ PDEVICE_OBJECT LowerDevice
,
159 PDEVICE_OBJECT DeviceObject
);
164 PCM_RESOURCE_LIST Source
);
168 PDEVICE_OBJECT DeviceObject
,
172 PBUS_INTERFACE_STANDARD Interface
,
173 PVOID InterfaceSpecificData
);
176 TranslateResourceListAddress(
177 PFDO_DEVICE_EXTENSION DeviceExtension
,
178 INTERFACE_TYPE BusType
,
179 ULONG SystemIoBusNumber
,
180 STOR_PHYSICAL_ADDRESS IoAddress
,
183 PPHYSICAL_ADDRESS TranslatedAddress
);
186 AllocateAddressMapping(
187 PMAPPED_ADDRESS
*MappedAddressList
,
188 STOR_PHYSICAL_ADDRESS IoAddress
,
198 _In_ PDEVICE_OBJECT DeviceObject
,
204 PHW_INITIALIZATION_DATA
205 PortGetDriverInitData(
206 PDRIVER_OBJECT_EXTENSION DriverExtension
,
207 INTERFACE_TYPE InterfaceType
);
212 _In_ PDRIVER_OBJECT DriverObject
,
213 _In_ PUNICODE_STRING RegistryPath
);
215 #endif /* _STORPORT_PCH_ */