2 * PROJECT: ReactOS ISA PnP Bus driver
4 * PURPOSE: PDO-specific code
5 * PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
14 IsaPdoQueryDeviceRelations(
15 IN PISAPNP_LOGICAL_DEVICE LogDev
,
17 IN PIO_STACK_LOCATION IrpSp
)
19 PDEVICE_RELATIONS DeviceRelations
;
21 if (IrpSp
->Parameters
.QueryDeviceRelations
.Type
!= TargetDeviceRelation
)
22 return Irp
->IoStatus
.Status
;
24 DeviceRelations
= ExAllocatePool(PagedPool
, sizeof(*DeviceRelations
));
26 return STATUS_INSUFFICIENT_RESOURCES
;
28 DeviceRelations
->Count
= 1;
29 DeviceRelations
->Objects
[0] = LogDev
->Common
.Self
;
30 ObReferenceObject(LogDev
->Common
.Self
);
32 Irp
->IoStatus
.Information
= (ULONG_PTR
)DeviceRelations
;
34 return STATUS_SUCCESS
;
40 IN PISAPNP_LOGICAL_DEVICE LogDev
,
42 IN PIO_STACK_LOCATION IrpSp
)
44 NTSTATUS Status
= Irp
->IoStatus
.Status
;
46 switch (IrpSp
->MinorFunction
)
48 case IRP_MN_START_DEVICE
:
49 Status
= IsaHwActivateDevice(LogDev
);
51 if (NT_SUCCESS(Status
))
52 LogDev
->Common
.State
= dsStarted
;
55 case IRP_MN_STOP_DEVICE
:
56 Status
= IsaHwDeactivateDevice(LogDev
);
58 if (NT_SUCCESS(Status
))
59 LogDev
->Common
.State
= dsStopped
;
62 case IRP_MN_QUERY_DEVICE_RELATIONS
:
63 Status
= IsaPdoQueryDeviceRelations(LogDev
, Irp
, IrpSp
);
66 case IRP_MN_QUERY_RESOURCES
:
67 DPRINT1("IRP_MN_QUERY_RESOURCES is UNIMPLEMENTED!\n");
70 case IRP_MN_QUERY_RESOURCE_REQUIREMENTS
:
71 DPRINT1("IRP_MN_QUERY_RESOURCE_REQUIREMENTS is UNIMPLEMENTED!\n");
75 DPRINT1("Unknown PnP code: %x\n", IrpSp
->MinorFunction
);
79 Irp
->IoStatus
.Status
= Status
;
80 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);