[STORPORT] Initialize the port configuration and pass it to the HwFindAdapter routine.
[reactos.git] / drivers / storage / port / storport / precomp.h
index 68c59ba..b084e0e 100644 (file)
@@ -11,6 +11,7 @@
 #include <wdm.h>
 #include <ntddk.h>
 #include <stdio.h>
+#include <memory.h>
 
 /* Declare STORPORT_API functions as exports rather than imports */
 #define _STORPORT_
 #include <ntddscsi.h>
 #include <ntdddisk.h>
 #include <mountdev.h>
+#include <wdmguid.h>
+
+/* Memory Tags */
+#define TAG_GLOBAL_DATA    'DGtS'
+#define TAG_INIT_DATA      'DItS'
+#define TAG_MINIPORT_DATA  'DMtS'
+#define TAG_ACCRESS_RANGE  'RAtS'
 
 typedef enum
 {
@@ -37,18 +45,38 @@ typedef enum
     PdoExtension
 } EXTENSION_TYPE;
 
+typedef struct _DRIVER_INIT_DATA
+{
+    LIST_ENTRY Entry;
+    HW_INITIALIZATION_DATA HwInitData;
+} DRIVER_INIT_DATA, *PDRIVER_INIT_DATA;
+
 typedef struct _DRIVER_OBJECT_EXTENSION
 {
     EXTENSION_TYPE ExtensionType;
-
     PDRIVER_OBJECT DriverObject;
 
     KSPIN_LOCK AdapterListLock;
     LIST_ENTRY AdapterListHead;
     ULONG AdapterCount;
 
+    LIST_ENTRY InitDataListHead;
 } DRIVER_OBJECT_EXTENSION, *PDRIVER_OBJECT_EXTENSION;
 
+typedef struct _MINIPORT_DEVICE_EXTENSION
+{
+    struct _MINIPORT *Miniport;
+    UCHAR HwDeviceExtension[0];
+} MINIPORT_DEVICE_EXTENSION, *PMINIPORT_DEVICE_EXTENSION;
+
+typedef struct _MINIPORT
+{
+    struct _FDO_DEVICE_EXTENSION *DeviceExtension;
+    PHW_INITIALIZATION_DATA InitData;
+    PORT_CONFIGURATION_INFORMATION PortConfig;
+    PMINIPORT_DEVICE_EXTENSION MiniportExtension;
+} MINIPORT, *PMINIPORT;
+
 typedef struct _FDO_DEVICE_EXTENSION
 {
     EXTENSION_TYPE ExtensionType;
@@ -56,10 +84,12 @@ typedef struct _FDO_DEVICE_EXTENSION
     PDEVICE_OBJECT Device;
     PDEVICE_OBJECT LowerDevice;
     PDEVICE_OBJECT PhysicalDevice;
-
+    PDRIVER_OBJECT_EXTENSION DriverExtension;
     DEVICE_STATE PnpState;
-
     LIST_ENTRY AdapterListEntry;
+    MINIPORT Miniport;
+    ULONG BusNumber;
+    ULONG SlotNumber;
 } FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
 
 
@@ -83,6 +113,23 @@ PortFdoPnp(
     _In_ PIRP Irp);
 
 
+/* miniport.c */
+
+NTSTATUS
+MiniportInitialize(
+    _In_ PMINIPORT Miniport,
+    _In_ PFDO_DEVICE_EXTENSION DeviceExtension,
+    _In_ PHW_INITIALIZATION_DATA HwInitializationData);
+
+NTSTATUS
+MiniportFindAdapter(
+    _In_ PMINIPORT Miniport);
+
+NTSTATUS
+MiniportHwInitialize(
+    _In_ PMINIPORT Miniport);
+
+
 /* misc.c */
 
 NTSTATUS
@@ -96,6 +143,9 @@ ForwardIrpAndForget(
     _In_ PDEVICE_OBJECT LowerDevice,
     _In_ PIRP Irp);
 
+INTERFACE_TYPE
+GetBusInterface(
+    PDEVICE_OBJECT DeviceObject);
 
 /* pdo.c */
 
@@ -108,6 +158,11 @@ PortPdoPnp(
 
 /* storport.c */
 
+PHW_INITIALIZATION_DATA
+PortGetDriverInitData(
+    PDRIVER_OBJECT_EXTENSION DriverExtension,
+    INTERFACE_TYPE InterfaceType);
+
 NTSTATUS
 NTAPI
 DriverEntry(