2 * PROJECT: ReactOS Storport Driver
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Miniport interface code
5 * COPYRIGHT: Copyright 2017 Eric Kohl (eric.kohl@reactos.org)
8 /* INCLUDES *******************************************************************/
16 /* FUNCTIONS ******************************************************************/
20 _In_ PMINIPORT Miniport
,
21 _In_ PFDO_DEVICE_EXTENSION DeviceExtension
,
22 _In_ PHW_INITIALIZATION_DATA InitData
)
24 PMINIPORT_DEVICE_EXTENSION MiniportExtension
;
27 DPRINT1("MiniportInitialize(%p %p %p)\n",
28 Miniport
, DeviceExtension
, InitData
);
30 Miniport
->DeviceExtension
= DeviceExtension
;
31 Miniport
->InitData
= InitData
;
33 /* Calculate the miniport device extension size */
34 Size
= sizeof(MINIPORT_DEVICE_EXTENSION
) +
35 Miniport
->InitData
->DeviceExtensionSize
;
37 /* Allocate and initialize the miniport device extension */
38 MiniportExtension
= ExAllocatePoolWithTag(NonPagedPool
,
41 if (MiniportExtension
== NULL
)
42 return STATUS_NO_MEMORY
;
44 RtlZeroMemory(MiniportExtension
, Size
);
46 MiniportExtension
->Miniport
= Miniport
;
47 Miniport
->MiniportExtension
= MiniportExtension
;
49 return STATUS_SUCCESS
;
55 _In_ PMINIPORT Miniport
)
57 BOOLEAN Reserved
= FALSE
;
61 DPRINT1("MiniportFindAdapter(%p)\n", Miniport
);
63 /* Call the miniport HwFindAdapter routine */
64 Result
= Miniport
->InitData
->HwFindAdapter(&Miniport
->MiniportExtension
->HwDeviceExtension
,
70 DPRINT1("HwFindAdapter() returned %lu\n", Result
);
74 case SP_RETURN_NOT_FOUND
:
75 DPRINT1("SP_RETURN_NOT_FOUND\n");
76 Status
= STATUS_NOT_FOUND
;
80 DPRINT1("SP_RETURN_FOUND\n");
81 Status
= STATUS_SUCCESS
;
85 DPRINT1("SP_RETURN_ERROR\n");
86 Status
= STATUS_ADAPTER_HARDWARE_ERROR
;
89 case SP_RETURN_BAD_CONFIG
:
90 DPRINT1("SP_RETURN_BAD_CONFIG\n");
91 Status
= STATUS_DEVICE_CONFIGURATION_ERROR
;
95 DPRINT1("Unknown result: %lu\n", Result
);
96 Status
= STATUS_INTERNAL_ERROR
;
105 MiniportHwInitialize(
106 _In_ PMINIPORT Miniport
)
110 DPRINT1("MiniportHwInitialize(%p)\n", Miniport
);
112 /* Call the miniport HwInitialize routine */
113 Status
= Miniport
->InitData
->HwInitialize(&Miniport
->MiniportExtension
->HwDeviceExtension
);
114 DPRINT1("HwInitialize() returned 0x%08lx\n", Status
);