mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
[STORORT] Allocate the miniport device extension and use it the calls to HwFindAdapter and HwInitialize.
CORE-13866
This commit is contained in:
parent
dc8bfeabcf
commit
42cb5353b8
3 changed files with 48 additions and 9 deletions
|
@ -38,9 +38,14 @@ PortFdoStartMiniport(
|
|||
return STATUS_NO_SUCH_DEVICE;
|
||||
|
||||
/* Initialize the miniport */
|
||||
MiniportInitialize(&DeviceExtension->Miniport,
|
||||
DeviceExtension,
|
||||
InitData);
|
||||
Status = MiniportInitialize(&DeviceExtension->Miniport,
|
||||
DeviceExtension,
|
||||
InitData);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("MiniportInitialize() failed (Status 0x%08lx)\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Call the miniports FindAdapter function */
|
||||
Status = MiniportFindAdapter(&DeviceExtension->Miniport);
|
||||
|
|
|
@ -15,14 +15,38 @@
|
|||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
||||
VOID
|
||||
NTSTATUS
|
||||
MiniportInitialize(
|
||||
_In_ PMINIPORT Miniport,
|
||||
_In_ PFDO_DEVICE_EXTENSION DeviceExtension,
|
||||
_In_ PHW_INITIALIZATION_DATA InitData)
|
||||
{
|
||||
PMINIPORT_DEVICE_EXTENSION MiniportExtension;
|
||||
ULONG Size;
|
||||
|
||||
DPRINT1("MiniportInitialize(%p %p %p)\n",
|
||||
Miniport, DeviceExtension, InitData);
|
||||
|
||||
Miniport->DeviceExtension = DeviceExtension;
|
||||
Miniport->InitData = InitData;
|
||||
|
||||
/* Calculate the miniport device extension size */
|
||||
Size = sizeof(MINIPORT_DEVICE_EXTENSION) +
|
||||
Miniport->InitData->DeviceExtensionSize;
|
||||
|
||||
/* Allocate and initialize the miniport device extension */
|
||||
MiniportExtension = ExAllocatePoolWithTag(NonPagedPool,
|
||||
Size,
|
||||
TAG_MINIPORT_DATA);
|
||||
if (MiniportExtension == NULL)
|
||||
return STATUS_NO_MEMORY;
|
||||
|
||||
RtlZeroMemory(MiniportExtension, Size);
|
||||
|
||||
MiniportExtension->Miniport = Miniport;
|
||||
Miniport->MiniportExtension = MiniportExtension;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,7 +60,8 @@ MiniportFindAdapter(
|
|||
|
||||
DPRINT1("MiniportFindAdapter(%p)\n", Miniport);
|
||||
|
||||
Result = Miniport->InitData->HwFindAdapter(NULL,
|
||||
/* Call the miniport HwFindAdapter routine */
|
||||
Result = Miniport->InitData->HwFindAdapter(&Miniport->MiniportExtension->HwDeviceExtension,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
@ -84,7 +109,8 @@ MiniportHwInitialize(
|
|||
|
||||
DPRINT1("MiniportHwInitialize(%p)\n", Miniport);
|
||||
|
||||
Status = Miniport->InitData->HwInitialize(NULL);
|
||||
/* Call the miniport HwInitialize routine */
|
||||
Status = Miniport->InitData->HwInitialize(&Miniport->MiniportExtension->HwDeviceExtension);
|
||||
DPRINT1("HwInitialize() returned 0x%08lx\n", Status);
|
||||
|
||||
return Status;
|
||||
|
|
|
@ -23,8 +23,9 @@
|
|||
#include <wdmguid.h>
|
||||
|
||||
/* Memory Tags */
|
||||
#define TAG_GLOBAL_DATA 'DGtS'
|
||||
#define TAG_INIT_DATA 'DItS'
|
||||
#define TAG_GLOBAL_DATA 'DGtS'
|
||||
#define TAG_INIT_DATA 'DItS'
|
||||
#define TAG_MINIPORT_DATA 'DMtS'
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -61,10 +62,17 @@ typedef struct _DRIVER_OBJECT_EXTENSION
|
|||
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;
|
||||
PMINIPORT_DEVICE_EXTENSION MiniportExtension;
|
||||
} MINIPORT, *PMINIPORT;
|
||||
|
||||
typedef struct _FDO_DEVICE_EXTENSION
|
||||
|
@ -107,7 +115,7 @@ PortFdoPnp(
|
|||
|
||||
/* miniport.c */
|
||||
|
||||
VOID
|
||||
NTSTATUS
|
||||
MiniportInitialize(
|
||||
_In_ PMINIPORT Miniport,
|
||||
_In_ PFDO_DEVICE_EXTENSION DeviceExtension,
|
||||
|
|
Loading…
Reference in a new issue