Windows NT 4.0 source code leak
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++ BUILD Version: 0002
Copyright (c) 1995 Microsoft Corporation
Module Name:
pop.h
Abstract:
This module contains the private structure definitions and APIs used by the NT Power Manager.
Author:
N. Yoshiyama [IBM Corp.] 01-Mar-1994
Revision History:
--*/
#ifndef _POP_
#define _POP_
#include "ntos.h"
#define PopLockStateDatabase(OldIrql) \
KeAcquireSpinLock (&PopStateLock, OldIrql);
#define PopUnlockStateDatabase(OldIrql) \
KeReleaseSpinLock (&PopStateLock, OldIrql);
#define PopLockDeviceList(sharable) \
if (sharable) { \ ExAcquireResourceShared(&PsLoadedModuleResource, TRUE); \ } else { \ ExAcquireResourceExclusive(&PsLoadedModuleResource, TRUE); \ }
#define PopUnlockDeviceList() \
ExReleaseResource(&PsLoadedModuleResource);
// debugging
#if DBG
#define POERROR 0
#define PODIAG1 1
#define PODIAG2 2
#define PODIAG3 3
extern ULONG PoDebug; extern PUCHAR PopPowerState(POWER_STATE);
VOID PoDebugPrint( ULONG DebugPrintLevel, PCCHAR DebugMessage, ... );
#define PoDbgPrint(level,msg) { if (level < PoDebug) DbgPrint(msg); }
#else
#define PoDbgPrint(level,msg)
#endif //DBG
//
// Define the global data for the Power Manager.
//
extern ERESOURCE PopDatabaseLock; extern KEVENT PopStateDatabaseIdle; extern KSPIN_LOCK PopStateLock; extern LIST_ENTRY PopDeviceList; extern LIST_ENTRY PopAsyncStateChangeQueue; extern LIST_ENTRY PopSyncStateChangeQueue; extern LIST_ENTRY PopStateChangeInProgress; extern LIST_ENTRY PopStateChangeWorkerList; extern BOOLEAN PopSyncChangeInProgress; extern KTIMER PopStateChangeTimer; extern KDPC PopStateChangeDpc; extern BOOLEAN PopStateChangeDpcActive; extern LIST_ENTRY PopActiveIdleScanQueue; extern LIST_ENTRY PopInactiveIdleQueue; extern KTIMER PopIdleScanTimer; extern KDPC PopIdleScanDpc; extern LARGE_INTEGER PopIdleScanTime; extern ULONG PopIdleScanTimeInSeconds; extern UCHAR PopNewPendingState[MaximumPowerState][MaximumPowerState]; extern POBJECT_TYPE IoDeviceObjectType; extern WORK_QUEUE_ITEM PopStateChangeWorkItem;
#define VerifyUp MaximumPowerState
// idle.c
VOID PopScanForIdleDevices ( IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2 );
// misc.c
POBJECT_NAME_INFORMATION PopGetDeviceName ( PDEVICE_OBJECT DeviceObject );
// postate.c
VOID PopRequestPowerChange ( IN PDEVOBJ_EXTENSION PowerExtension, IN POWER_STATE SystemPowerState, IN ULONG DevicePowerState );
VOID PopStateChange ( IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2 );
VOID PopStateChangeWorker ( IN PVOID WorkerContext );
NTSTATUS PopSetPowerComplete( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context );
#define PopIsStateDatabaseIdle() \
(IsListEmpty (&PopStateChangeInProgress) && \ IsListEmpty (&PopSyncStateChangeQueue) && \ IsListEmpty (&PopAsyncStateChangeQueue) )
// suspend.c
PVOID PopGetBroadcastOrder ( VOID );
NTSTATUS PopBroadcastSetPower ( IN PVOID BroadcastOrder, IN POWER_STATE PowerState, IN OUT PLIST_ENTRY FailedDevice );
VOID PopReleaseBroadcast ( IN PVOID BroadcastOrder );
#endif // _POP_
|