All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.jna.platform.win32.PowrProf Maven / Gradle / Ivy

The newest version!
/* Copyright (c) 2019 Daniel Widdis, All Rights Reserved
 *
 * The contents of this file is dual-licensed under 2
 * alternative Open Source/Free licenses: LGPL 2.1 or later and
 * Apache License 2.0. (starting with JNA version 4.0.0).
 *
 * You can freely decide which license you want to apply to
 * the project.
 *
 * You may obtain a copy of the LGPL License at:
 *
 * http://www.gnu.org/licenses/licenses.html
 *
 * A copy is also included in the downloadable source code package
 * containing JNA, in file "LGPL2.1".
 *
 * You may obtain a copy of the Apache License at:
 *
 * http://www.apache.org/licenses/
 *
 * A copy is also included in the downloadable source code package
 * containing JNA, in file "AL2.0".
 */
package com.sun.jna.platform.win32;

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;

/**
 * Functions used with power management.
 */
public interface PowrProf extends Library {
    PowrProf INSTANCE = Native.load("PowrProf", PowrProf.class);

    /**
     * Enum which indicates the power information level requested from
     * {@link #CallNtPowerInformation}. This value indicates the specific
     * power information to be set or retrieved.
     */
    public interface POWER_INFORMATION_LEVEL {
        /**
         * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the
         * function returns {@link WinError#ERROR_INVALID_PARAMETER}.
         * 

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinDef.ULONGLONG} that specifies * the interrupt-time count, in 100-nanosecond units, at the last system * sleep time. */ int LastSleepTime = 15; /** * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinDef.ULONGLONG} that specifies * the interrupt-time count, in 100-nanosecond units, at the last system * wake time. */ int LastWakeTime = 14; /** * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives one * {@link com.sun.jna.platform.win32.WinNT.PROCESSOR_POWER_INFORMATION} * structure for each processor that is installed on the system. Use the * {@link Kernel32#GetSystemInfo} function to retrieve the number of * processors, which will be the number of logical processors on the * current Processor Group. */ int ProcessorInformation = 11; /** * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_BATTERY_STATE} * structure containing information about the current system battery. */ int SystemBatteryState = 5; /** * The {@code lpInBuffer} parameter must be {@code NULL} otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinDef.ULONG} value containing the * system execution state buffer. This value may contain any combination * of the following values: {@link WinBase#ES_SYSTEM_REQUIRED}, * {@link WinBase#ES_DISPLAY_REQUIRED}, or * {@link WinBase#ES_USER_PRESENT}. For more information, see the * {@link Kernel32#SetThreadExecutionState} function. */ int SystemExecutionState = 16; /** * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_CAPABILITIES} structure containing the * current system power capabilities. *

* This information represents the currently supported power * capabilities. It may change as drivers are installed in the system. * For example, installation of legacy device drivers that do not * support power management disables all system sleep states. */ int SystemPowerCapabilities = 4; /** * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_INFORMATION} structure. *

* Applications can use this level to retrieve information about the * idleness of the system. */ int SystemPowerInformation = 12; /** * If {@code lpInBuffer} is not {@code NULL}, the function applies the * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_POLICY} values * passed in {@code lpInBuffer} to the current system power policy used * while the system is running on AC (utility) power. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_POLICY} * structure containing the current system power policy used while the * system is running on AC (utility) power. */ int SystemPowerPolicyAc = 0; /** * The {@code lpInBuffer} parameter must be {@code NULL}; otherwise, the * function returns {@link WinError#ERROR_INVALID_PARAMETER}. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_POLICY} structure containing the current * system power policy used while the system is running on AC (utility) * power. */ int SystemPowerPolicyCurrent = 8; /** * If {@code lpInBuffer} is not {@code NULL}, the function applies the * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_POLICY} values * passed in {@code lpInBuffer} to the current system power policy used * while the system is running on battery power. *

* The {@code lpOutputBuffer} buffer receives a * {@link com.sun.jna.platform.win32.WinNT.SYSTEM_POWER_POLICY} * structure containing the current system power policy used while the * system is running on battery power. */ int SystemPowerPolicyDc = 1; /** * If {@code lpInBuffer} is not {@code NULL} and the current user has * sufficient privileges, the function commits or decommits the storage * required to hold the hibernation image on the boot volume. *

* The lpInBuffer parameter must point to a {@code BOOLEAN} value * indicating the desired request. If the value is {@code TRUE}, the * hibernation file is reserved; if the value is {@code FALSE}, the * hibernation file is removed. */ int SystemReserveHiberFile = 10; } /** * Sets or retrieves power information. *

* Changes made to the current system power policy using * {@link #CallNtPowerInformation} are immediate, but they are not * persistent; that is, the changes are not stored as part of a power * scheme. Any changes to system power policy made with * {@link #CallNtPowerInformation} may be overwritten by changes to a * policy scheme made by the user in the Power Options control panel * program, or by subsequent calls to {@code WritePwrScheme}, * {@code SetActivePwrScheme}, or other power scheme functions. * * @param informationLevel * The information level requested. This value indicates the * specific power information to be set or retrieved. This * parameter must be one of the following * {@link POWER_INFORMATION_LEVEL} enumeration type values: * {@link POWER_INFORMATION_LEVEL#LastSleepTime}, * {@link POWER_INFORMATION_LEVEL#LastWakeTime}, * {@link POWER_INFORMATION_LEVEL#ProcessorInformation}, * {@link POWER_INFORMATION_LEVEL#SystemBatteryState}, * {@link POWER_INFORMATION_LEVEL#SystemExecutionState}, * {@link POWER_INFORMATION_LEVEL#SystemPowerCapabilities}, * {@link POWER_INFORMATION_LEVEL#SystemPowerInformation}, * {@link POWER_INFORMATION_LEVEL#SystemPowerPolicyAc}, * {@link POWER_INFORMATION_LEVEL#SystemPowerPolicyCurrent}, * {@link POWER_INFORMATION_LEVEL#SystemPowerPolicyDc}, or * {@link POWER_INFORMATION_LEVEL#SystemReserveHiberFile}. * @param lpInputBuffer * A pointer to an optional input buffer. The data type of this * buffer depends on the information level requested in the * {@code informationLevel} parameter. * @param nInputBufferSize * The size of the input buffer, in bytes. * @param lpOutputBuffer * A pointer to an optional output buffer. The data type of this * buffer depends on the information level requested in the * {@code informationLevel} parameter. If the buffer is too small * to contain the information, the function returns * {@link NTStatus#STATUS_BUFFER_TOO_SMALL}. * @param nOutputBufferSize * The size of the output buffer, in bytes. Depending on the * information level requested, this may be a variably sized * buffer. * @return If the function succeeds, the return value is * {@link NTStatus#STATUS_SUCCESS}. If the function fails, the * return value can be one the following status codes: * {@link NTStatus#STATUS_BUFFER_TOO_SMALL} if the output buffer is * of insufficient size to contain the data to be returned. * {@link NTStatus#STATUS_ACCESS_DENIED} if the caller had * insufficient access rights to perform the requested action. */ int CallNtPowerInformation(int informationLevel, Pointer lpInputBuffer, int nInputBufferSize, Pointer lpOutputBuffer, int nOutputBufferSize); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy