ReactOS 0.4.17-dev-116-ga4b6fe9
power.c
Go to the documentation of this file.
1/*
2 * PROJECT: PCI IDE bus driver extension
3 * LICENSE: See COPYING in the top level directory
4 * PURPOSE: Power support functions
5 * COPYRIGHT: Copyright 2023 Dmitry Borisov <di.sean@protonmail.com>
6 */
7
8#include "pciidex.h"
9
10static
15{
17 PIO_STACK_LOCATION IoStack;
18
20
22 switch (IoStack->MinorFunction)
23 {
27 Irp->IoStatus.Status = Status;
28 break;
29
30 default:
31 Status = Irp->IoStatus.Status;
32 break;
33 }
34
37 return Status;
38}
39
40static
45{
48 return PoCallDriver(FdoExtension->Common.LowerDeviceObject, Irp);
49}
50
56{
57 PCOMMON_DEVICE_EXTENSION CommonExt = DeviceObject->DeviceExtension;
59
61 if (!NT_SUCCESS(Status))
62 {
63 Irp->IoStatus.Status = Status;
65
66 return Status;
67 }
68
69 if (IS_FDO(CommonExt))
71 else
73
75
76 return Status;
77}
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define IS_FDO(p)
Definition: atapi.h:173
LONG NTSTATUS
Definition: precomp.h:26
_In_ PIRP Irp
Definition: csq.h:116
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
static NTSTATUS PciIdeXFdoDispatchPower(_In_ PFDO_DEVICE_EXTENSION FdoExtension, _In_ PIRP Irp)
Definition: power.c:42
static NTSTATUS PciIdeXPdoDispatchPower(_In_ PPDO_DEVICE_EXTENSION PdoExtension, _In_ PIRP Irp)
Definition: power.c:12
NTSTATUS NTAPI PciIdeXDispatchPower(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
Definition: power.c:53
@ PdoExtension
Definition: precomp.h:49
@ FdoExtension
Definition: precomp.h:48
Status
Definition: gdiplustypes.h:25
#define _Inout_
Definition: no_sal2.h:162
#define _In_
Definition: no_sal2.h:158
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329
#define IoSkipCurrentIrpStackLocation(Irp)
Definition: ntifs_ex.h:421
#define IoCompleteRequest
Definition: irp.c:1240
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
Definition: power.c:758
#define STATUS_SUCCESS
Definition: shellext.h:65
IO_REMOVE_LOCK RemoveLock
Definition: pciidex.h:381
#define NTAPI
Definition: typedefs.h:36
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
#define IoAcquireRemoveLock(RemoveLock, Tag)
#define IoReleaseRemoveLock(_RemoveLock, _Tag)
Definition: iofuncs.h:2764
#define IO_NO_INCREMENT
Definition: iotypes.h:598
#define IRP_MN_SET_POWER
#define IRP_MN_QUERY_POWER