172 lines
3.1 KiB
C
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
|
|
|