2 * PROJECT: ReactOS ISA PnP Bus driver
4 * PURPOSE: PDO-specific code
5 * PROGRAMMERS: Cameron Gutman (cameron.gutman@reactos.org)
15 IsaPdoQueryDeviceRelations(
16 IN PISAPNP_LOGICAL_DEVICE LogDev
,
18 IN PIO_STACK_LOCATION IrpSp
)
20 PDEVICE_RELATIONS DeviceRelations
;
22 if (IrpSp
->Parameters
.QueryDeviceRelations
.Type
!= TargetDeviceRelation
)
23 return Irp
->IoStatus
.Status
;
25 DeviceRelations
= ExAllocatePool(PagedPool
, sizeof(*DeviceRelations
));
27 return STATUS_INSUFFICIENT_RESOURCES
;
29 DeviceRelations
->Count
= 1;
30 DeviceRelations
->Objects
[0] = LogDev
->Common
.Self
;
31 ObReferenceObject(LogDev
->Common
.Self
);
33 Irp
->IoStatus
.Information
= (ULONG_PTR
)DeviceRelations
;
35 return STATUS_SUCCESS
;
41 IN PISAPNP_LOGICAL_DEVICE LogDev
,
43 IN PIO_STACK_LOCATION IrpSp
)
45 NTSTATUS Status
= Irp
->IoStatus
.Status
;
47 switch (IrpSp
->MinorFunction
)
49 case IRP_MN_START_DEVICE
:
50 Status
= IsaHwActivateDevice(LogDev
);
52 if (NT_SUCCESS(Status
))
53 LogDev
->Common
.State
= dsStarted
;
56 case IRP_MN_STOP_DEVICE
:
57 Status
= IsaHwDeactivateDevice(LogDev
);
59 if (NT_SUCCESS(Status
))
60 LogDev
->Common
.State
= dsStopped
;
63 case IRP_MN_QUERY_DEVICE_RELATIONS
:
64 Status
= IsaPdoQueryDeviceRelations(LogDev
, Irp
, IrpSp
);
67 case IRP_MN_QUERY_RESOURCES
:
68 DPRINT1("IRP_MN_QUERY_RESOURCES is UNIMPLEMENTED!\n");
71 case IRP_MN_QUERY_RESOURCE_REQUIREMENTS
:
72 DPRINT1("IRP_MN_QUERY_RESOURCE_REQUIREMENTS is UNIMPLEMENTED!\n");
76 DPRINT1("Unknown PnP code: %x\n", IrpSp
->MinorFunction
);
80 Irp
->IoStatus
.Status
= Status
;
81 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);