summaryrefslogtreecommitdiffstats
path: root/third_party/rust/ntapi/src/ntpoapi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/ntapi/src/ntpoapi.rs')
-rw-r--r--third_party/rust/ntapi/src/ntpoapi.rs134
1 files changed, 134 insertions, 0 deletions
diff --git a/third_party/rust/ntapi/src/ntpoapi.rs b/third_party/rust/ntapi/src/ntpoapi.rs
new file mode 100644
index 0000000000..ecc68fc854
--- /dev/null
+++ b/third_party/rust/ntapi/src/ntpoapi.rs
@@ -0,0 +1,134 @@
+use winapi::shared::ntdef::{
+ BOOLEAN, HANDLE, LONG, NTSTATUS, PLONG, PUNICODE_STRING, PVOID, UCHAR, ULONG, UNICODE_STRING,
+ USHORT,
+};
+use winapi::um::winnt::{
+ DEVICE_POWER_STATE, EXECUTION_STATE, LATENCY_TIME, PDEVICE_POWER_STATE, PEXECUTION_STATE,
+ POWER_ACTION, POWER_INFORMATION_LEVEL, SYSTEM_POWER_STATE,
+};
+UNION!{union POWER_STATE {
+ SystemState: SYSTEM_POWER_STATE,
+ DeviceState: DEVICE_POWER_STATE,
+}}
+pub type PPOWER_STATE = *mut POWER_STATE;
+ENUM!{enum POWER_STATE_TYPE {
+ SystemPowerState = 0,
+ DevicePowerState = 1,
+}}
+pub type PPOWER_STATE_TYPE = *mut POWER_STATE_TYPE;
+STRUCT!{struct SYSTEM_POWER_STATE_CONTEXT {
+ ContextAsUlong: ULONG,
+}}
+BITFIELD!{SYSTEM_POWER_STATE_CONTEXT ContextAsUlong: ULONG [
+ Reserved1 set_Reserved1[0..8],
+ TargetSystemState set_TargetSystemState[8..12],
+ EffectiveSystemState set_EffectiveSystemState[12..16],
+ CurrentSystemState set_CurrentSystemState[16..20],
+ IgnoreHibernationPath set_IgnoreHibernationPath[20..21],
+ PseudoTransition set_PseudoTransition[21..22],
+ Reserved2 set_Reserved2[22..32],
+]}
+pub type PSYSTEM_POWER_STATE_CONTEXT = *mut SYSTEM_POWER_STATE_CONTEXT;
+STRUCT!{struct COUNTED_REASON_CONTEXT_u_s {
+ ResourceFileName: UNICODE_STRING,
+ ResourceReasonId: USHORT,
+ StringCount: ULONG,
+ ReasonStrings: PUNICODE_STRING,
+}}
+UNION!{union COUNTED_REASON_CONTEXT_u {
+ s: COUNTED_REASON_CONTEXT_u_s,
+ SimpleString: UNICODE_STRING,
+}}
+STRUCT!{struct COUNTED_REASON_CONTEXT {
+ Version: ULONG,
+ Flags: ULONG,
+ u: COUNTED_REASON_CONTEXT_u,
+}}
+pub type PCOUNTED_REASON_CONTEXT = *mut COUNTED_REASON_CONTEXT;
+ENUM!{enum POWER_STATE_HANDLER_TYPE {
+ PowerStateSleeping1 = 0,
+ PowerStateSleeping2 = 1,
+ PowerStateSleeping3 = 2,
+ PowerStateSleeping4 = 3,
+ PowerStateShutdownOff = 4,
+ PowerStateShutdownReset = 5,
+ PowerStateSleeping4Firmware = 6,
+ PowerStateMaximum = 7,
+}}
+pub type PPOWER_STATE_HANDLER_TYPE = *mut POWER_STATE_HANDLER_TYPE;
+FN!{stdcall PENTER_STATE_SYSTEM_HANDLER(
+ SystemContext: PVOID,
+) -> NTSTATUS}
+FN!{stdcall PENTER_STATE_HANDLER(
+ Context: PVOID,
+ SystemHandler: PENTER_STATE_SYSTEM_HANDLER,
+ SystemContext: PVOID,
+ NumberProcessors: LONG,
+ Number: PLONG,
+) -> NTSTATUS}
+STRUCT!{struct POWER_STATE_HANDLER {
+ Type: POWER_STATE_HANDLER_TYPE,
+ RtcWake: BOOLEAN,
+ Spare: [UCHAR; 3],
+ Handler: PENTER_STATE_HANDLER,
+ Context: PVOID,
+}}
+pub type PPOWER_STATE_HANDLER = *mut POWER_STATE_HANDLER;
+FN!{stdcall PENTER_STATE_NOTIFY_HANDLER(
+ State: POWER_STATE_HANDLER_TYPE,
+ Context: PVOID,
+ Entering: BOOLEAN,
+) -> NTSTATUS}
+STRUCT!{struct POWER_STATE_NOTIFY_HANDLER {
+ Handler: PENTER_STATE_NOTIFY_HANDLER,
+ Context: PVOID,
+}}
+pub type PPOWER_STATE_NOTIFY_HANDLER = *mut POWER_STATE_NOTIFY_HANDLER;
+STRUCT!{struct PROCESSOR_POWER_INFORMATION {
+ Number: ULONG,
+ MaxMhz: ULONG,
+ CurrentMhz: ULONG,
+ MhzLimit: ULONG,
+ MaxIdleState: ULONG,
+ CurrentIdleState: ULONG,
+}}
+pub type PPROCESSOR_POWER_INFORMATION = *mut PROCESSOR_POWER_INFORMATION;
+STRUCT!{struct SYSTEM_POWER_INFORMATION {
+ MaxIdlenessAllowed: ULONG,
+ Idleness: ULONG,
+ TimeRemaining: ULONG,
+ CoolingMode: UCHAR,
+}}
+pub type PSYSTEM_POWER_INFORMATION = *mut SYSTEM_POWER_INFORMATION;
+EXTERN!{extern "system" {
+ fn NtPowerInformation(
+ InformationLevel: POWER_INFORMATION_LEVEL,
+ InputBuffer: PVOID,
+ InputBufferLength: ULONG,
+ OutputBuffer: PVOID,
+ OutputBufferLength: ULONG,
+ ) -> NTSTATUS;
+ fn NtSetThreadExecutionState(
+ NewFlags: EXECUTION_STATE,
+ PreviousFlags: PEXECUTION_STATE,
+ ) -> NTSTATUS;
+ fn NtRequestWakeupLatency(
+ latency: LATENCY_TIME,
+ ) -> NTSTATUS;
+ fn NtInitiatePowerAction(
+ SystemAction: POWER_ACTION,
+ LightestSystemState: SYSTEM_POWER_STATE,
+ Flags: ULONG,
+ Asynchronous: BOOLEAN,
+ ) -> NTSTATUS;
+ fn NtSetSystemPowerState(
+ SystemAction: POWER_ACTION,
+ LightestSystemState: SYSTEM_POWER_STATE,
+ Flags: ULONG,
+ ) -> NTSTATUS;
+ fn NtGetDevicePowerState(
+ Device: HANDLE,
+ State: PDEVICE_POWER_STATE,
+ ) -> NTSTATUS;
+ fn NtIsSystemResumeAutomatic() -> BOOLEAN;
+}}