windows-nt/Source/XPSP1/NT/base/hals/processor/lib/power.h
2020-09-26 16:20:57 +08:00

172 lines
3.1 KiB
C

/*++
Copyright (c) 1990-2000 Microsoft Corporation All Rights Reserved
Module Name:
power.h
Abstract:
This module contains the declarations used by power.c
Author:
Eliyas Yakub Sep 16, 1998
Environment:
user and kernel
Notes:
Revision History:
--*/
#ifndef __POWER_H
#define __POWER_H
typedef enum {
IRP_NEEDS_FORWARDING = 1,
IRP_ALREADY_FORWARDED
} IRP_DIRECTION;
typedef struct _POWER_COMPLETION_CONTEXT {
PDEVICE_OBJECT DeviceObject;
PIRP SIrp;
} POWER_COMPLETION_CONTEXT, *PPOWER_COMPLETION_CONTEXT;
typedef struct _WORKER_THREAD_CONTEXT {
PDEVICE_OBJECT DeviceObject;
PIRP Irp;
IRP_DIRECTION IrpDirection;
PIO_WORKITEM WorkItem;
} WORKER_THREAD_CONTEXT, *PWORKER_THREAD_CONTEXT;
typedef struct {
PAC_DC_NOTIFY_HANDLER Handler;
PVOID Context;
} AC_DC_TRANSITION_NOTIFY, *PAC_DC_TRANSITION_NOTIFY;
NTSTATUS
ProcessorDefaultPowerHandler (
IN PDEVICE_OBJECT DeviceObject,
IN OUT PIRP Irp
);
NTSTATUS
ProcessorQueryPowerState (
IN PDEVICE_OBJECT DeviceObject,
IN OUT PIRP Irp
);
NTSTATUS
ProcessorSetPowerState (
IN PDEVICE_OBJECT DeviceObject,
IN OUT PIRP Irp
);
VOID
HoldIoRequestsWorkerRoutine(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID Context
);
NTSTATUS
HoldIoRequests(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN IRP_DIRECTION Direction
);
NTSTATUS
ProcessorPowerCompletionRoutine (
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
) ;
VOID
ProcessorPoRequestComplete (
IN PDEVICE_OBJECT DeviceObject,
IN UCHAR MinorFunction,
IN POWER_STATE PowerState,
IN PVOID Context,
IN PIO_STATUS_BLOCK IoStatus
);
NTSTATUS
HandleSystemPowerIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
OnFinishSystemPowerUp(
IN PDEVICE_OBJECT Fdo,
IN PIRP Irp,
IN PVOID NotUsed
);
VOID
QueueCorrespondingDeviceIrp(
IN PIRP SIrp,
IN PDEVICE_OBJECT DeviceObject
);
VOID
OnPowerRequestComplete(
PDEVICE_OBJECT DeviceObject,
UCHAR MinorFunction,
POWER_STATE state,
POWER_COMPLETION_CONTEXT* ctx,
PIO_STATUS_BLOCK pstatus
);
NTSTATUS
HandleDeviceQueryPower(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
NTSTATUS HandleDeviceSetPower(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
NTSTATUS
OnFinishDevicePowerUp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID junk
);
NTSTATUS
BeginSetDevicePowerState(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN IRP_DIRECTION Direction
);
NTSTATUS
FinishDevicePowerIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN IRP_DIRECTION Direction,
IN NTSTATUS Result
);
#endif