2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: PCI IDE bus driver extension
4 * FILE: drivers/storage/pciidex/miniport.c
5 * PURPOSE: Miniport functions
6 * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org)
17 IN PDEVICE_OBJECT DeviceObject
,
20 if (((PCOMMON_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
)->IsFDO
)
21 return PciIdeXFdoPnpDispatch(DeviceObject
, Irp
);
23 return PciIdeXPdoPnpDispatch(DeviceObject
, Irp
);
28 IN PDRIVER_OBJECT DriverObject
,
29 IN PUNICODE_STRING RegistryPath
,
30 IN PCONTROLLER_PROPERTIES HwGetControllerProperties
,
31 IN ULONG ExtensionSize
)
34 PPCIIDEX_DRIVER_EXTENSION DriverExtension
;
37 DPRINT("PciIdeXInitialize(%p '%wZ' %p 0x%lx)\n",
38 DriverObject
, RegistryPath
, HwGetControllerProperties
, ExtensionSize
);
40 Status
= IoAllocateDriverObjectExtension(
43 sizeof(PCIIDEX_DRIVER_EXTENSION
),
44 (PVOID
*)&DriverExtension
);
45 if (!NT_SUCCESS(Status
))
47 RtlZeroMemory(DriverExtension
, sizeof(PCIIDEX_DRIVER_EXTENSION
));
48 DriverExtension
->MiniControllerExtensionSize
= ExtensionSize
;
49 DriverExtension
->HwGetControllerProperties
= HwGetControllerProperties
;
51 DriverObject
->DriverExtension
->AddDevice
= PciIdeXAddDevice
;
53 for (i
= 0; i
< IRP_MJ_MAXIMUM_FUNCTION
; i
++)
54 DriverObject
->MajorFunction
[i
] = ForwardIrpAndForget
;
55 DriverObject
->MajorFunction
[IRP_MJ_PNP
] = PciIdeXPnpDispatch
;
57 return STATUS_SUCCESS
;
60 /* May be called at IRQL <= DISPATCH_LEVEL */
63 IN PVOID DeviceExtension
,
65 IN ULONG ConfigDataOffset
,
66 IN ULONG BufferLength
)
68 PFDO_DEVICE_EXTENSION FdoDeviceExtension
;
70 NTSTATUS Status
= STATUS_IO_DEVICE_ERROR
;
72 DPRINT("PciIdeXGetBusData(%p %p 0x%lx 0x%lx)\n",
73 DeviceExtension
, Buffer
, ConfigDataOffset
, BufferLength
);
75 FdoDeviceExtension
= CONTAINING_RECORD(DeviceExtension
, FDO_DEVICE_EXTENSION
, MiniControllerExtension
);
76 if (FdoDeviceExtension
->BusInterface
)
78 BytesRead
= (*FdoDeviceExtension
->BusInterface
->GetBusData
)(
79 FdoDeviceExtension
->BusInterface
->Context
,
80 PCI_WHICHSPACE_CONFIG
,
84 if (BytesRead
== BufferLength
)
85 Status
= STATUS_SUCCESS
;
91 /* May be called at IRQL <= DISPATCH_LEVEL */
94 IN PVOID DeviceExtension
,
97 IN ULONG ConfigDataOffset
,
98 IN ULONG BufferLength
)
100 DPRINT1("PciIdeXSetBusData(%p %p %p 0x%lx 0x%lx)\n",
101 DeviceExtension
, Buffer
, DataMask
, ConfigDataOffset
, BufferLength
);
103 return STATUS_NOT_IMPLEMENTED
;