/*++ 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