mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-23 20:05:26 +00:00
194 lines
4.5 KiB
C
194 lines
4.5 KiB
C
|
/*
|
||
|
* This file is part of the Process Hacker project - https://processhacker.sourceforge.io/
|
||
|
*
|
||
|
* You can redistribute this file and/or modify it under the terms of the
|
||
|
* Attribution 4.0 International (CC BY 4.0) license.
|
||
|
*
|
||
|
* You must give appropriate credit, provide a link to the license, and
|
||
|
* indicate if changes were made. You may do so in any reasonable manner, but
|
||
|
* not in any way that suggests the licensor endorses you or your use.
|
||
|
*/
|
||
|
|
||
|
#ifndef _NTPOAPI_H
|
||
|
#define _NTPOAPI_H
|
||
|
|
||
|
typedef union _POWER_STATE
|
||
|
{
|
||
|
SYSTEM_POWER_STATE SystemState;
|
||
|
DEVICE_POWER_STATE DeviceState;
|
||
|
} POWER_STATE, *PPOWER_STATE;
|
||
|
|
||
|
typedef enum _POWER_STATE_TYPE
|
||
|
{
|
||
|
SystemPowerState = 0,
|
||
|
DevicePowerState
|
||
|
} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
||
|
|
||
|
#if (PHNT_VERSION >= PHNT_VISTA)
|
||
|
// wdm
|
||
|
typedef struct _SYSTEM_POWER_STATE_CONTEXT
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
ULONG Reserved1 : 8;
|
||
|
ULONG TargetSystemState : 4;
|
||
|
ULONG EffectiveSystemState : 4;
|
||
|
ULONG CurrentSystemState : 4;
|
||
|
ULONG IgnoreHibernationPath : 1;
|
||
|
ULONG PseudoTransition : 1;
|
||
|
ULONG Reserved2 : 10;
|
||
|
};
|
||
|
ULONG ContextAsUlong;
|
||
|
};
|
||
|
} SYSTEM_POWER_STATE_CONTEXT, *PSYSTEM_POWER_STATE_CONTEXT;
|
||
|
#endif
|
||
|
|
||
|
#if (PHNT_VERSION >= PHNT_WIN7)
|
||
|
/** \cond NEVER */ // disable doxygen warning
|
||
|
// wdm
|
||
|
typedef struct _COUNTED_REASON_CONTEXT
|
||
|
{
|
||
|
ULONG Version;
|
||
|
ULONG Flags;
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
UNICODE_STRING ResourceFileName;
|
||
|
USHORT ResourceReasonId;
|
||
|
ULONG StringCount;
|
||
|
PUNICODE_STRING _Field_size_(StringCount) ReasonStrings;
|
||
|
};
|
||
|
UNICODE_STRING SimpleString;
|
||
|
};
|
||
|
} COUNTED_REASON_CONTEXT, *PCOUNTED_REASON_CONTEXT;
|
||
|
/** \endcond */
|
||
|
#endif
|
||
|
|
||
|
typedef enum _POWER_STATE_HANDLER_TYPE
|
||
|
{
|
||
|
PowerStateSleeping1 = 0,
|
||
|
PowerStateSleeping2 = 1,
|
||
|
PowerStateSleeping3 = 2,
|
||
|
PowerStateSleeping4 = 3,
|
||
|
PowerStateShutdownOff = 4,
|
||
|
PowerStateShutdownReset = 5,
|
||
|
PowerStateSleeping4Firmware = 6,
|
||
|
PowerStateMaximum = 7
|
||
|
} POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
|
||
|
|
||
|
typedef NTSTATUS (NTAPI *PENTER_STATE_SYSTEM_HANDLER)(
|
||
|
_In_ PVOID SystemContext
|
||
|
);
|
||
|
|
||
|
typedef NTSTATUS (NTAPI *PENTER_STATE_HANDLER)(
|
||
|
_In_ PVOID Context,
|
||
|
_In_opt_ PENTER_STATE_SYSTEM_HANDLER SystemHandler,
|
||
|
_In_ PVOID SystemContext,
|
||
|
_In_ LONG NumberProcessors,
|
||
|
_In_ volatile PLONG Number
|
||
|
);
|
||
|
|
||
|
typedef struct _POWER_STATE_HANDLER
|
||
|
{
|
||
|
POWER_STATE_HANDLER_TYPE Type;
|
||
|
BOOLEAN RtcWake;
|
||
|
UCHAR Spare[3];
|
||
|
PENTER_STATE_HANDLER Handler;
|
||
|
PVOID Context;
|
||
|
} POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
|
||
|
|
||
|
typedef NTSTATUS (NTAPI *PENTER_STATE_NOTIFY_HANDLER)(
|
||
|
_In_ POWER_STATE_HANDLER_TYPE State,
|
||
|
_In_ PVOID Context,
|
||
|
_In_ BOOLEAN Entering
|
||
|
);
|
||
|
|
||
|
typedef struct _POWER_STATE_NOTIFY_HANDLER
|
||
|
{
|
||
|
PENTER_STATE_NOTIFY_HANDLER Handler;
|
||
|
PVOID Context;
|
||
|
} POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
|
||
|
|
||
|
typedef struct _PROCESSOR_POWER_INFORMATION
|
||
|
{
|
||
|
ULONG Number;
|
||
|
ULONG MaxMhz;
|
||
|
ULONG CurrentMhz;
|
||
|
ULONG MhzLimit;
|
||
|
ULONG MaxIdleState;
|
||
|
ULONG CurrentIdleState;
|
||
|
} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
|
||
|
|
||
|
typedef struct _SYSTEM_POWER_INFORMATION
|
||
|
{
|
||
|
ULONG MaxIdlenessAllowed;
|
||
|
ULONG Idleness;
|
||
|
ULONG TimeRemaining;
|
||
|
UCHAR CoolingMode;
|
||
|
} SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
NTSTATUS
|
||
|
NTAPI
|
||
|
NtPowerInformation(
|
||
|
_In_ POWER_INFORMATION_LEVEL InformationLevel,
|
||
|
_In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
|
||
|
_In_ ULONG InputBufferLength,
|
||
|
_Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
|
||
|
_In_ ULONG OutputBufferLength
|
||
|
);
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
NTSTATUS
|
||
|
NTAPI
|
||
|
NtSetThreadExecutionState(
|
||
|
_In_ EXECUTION_STATE NewFlags, // ES_* flags
|
||
|
_Out_ EXECUTION_STATE *PreviousFlags
|
||
|
);
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
NTSTATUS
|
||
|
NTAPI
|
||
|
NtRequestWakeupLatency(
|
||
|
_In_ LATENCY_TIME latency
|
||
|
);
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
NTSTATUS
|
||
|
NTAPI
|
||
|
NtInitiatePowerAction(
|
||
|
_In_ POWER_ACTION SystemAction,
|
||
|
_In_ SYSTEM_POWER_STATE LightestSystemState,
|
||
|
_In_ ULONG Flags, // POWER_ACTION_* flags
|
||
|
_In_ BOOLEAN Asynchronous
|
||
|
);
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
NTSTATUS
|
||
|
NTAPI
|
||
|
NtSetSystemPowerState(
|
||
|
_In_ POWER_ACTION SystemAction,
|
||
|
_In_ SYSTEM_POWER_STATE LightestSystemState,
|
||
|
_In_ ULONG Flags // POWER_ACTION_* flags
|
||
|
);
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
NTSTATUS
|
||
|
NTAPI
|
||
|
NtGetDevicePowerState(
|
||
|
_In_ HANDLE Device,
|
||
|
_Out_ PDEVICE_POWER_STATE State
|
||
|
);
|
||
|
|
||
|
NTSYSCALLAPI
|
||
|
BOOLEAN
|
||
|
NTAPI
|
||
|
NtIsSystemResumeAutomatic(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
#endif
|