windows-nt/Source/XPSP1/NT/shell/inc/win95/pwrioctl.h
2020-09-26 16:20:57 +08:00

196 lines
7.5 KiB
C

/*******************************************************************************
*
* (C) COPYRIGHT MICROSOFT CORP., 1993-1994
*
* TITLE: PWRIOCTL.H
*
* VERSION: 1.0
*
* DATE: 01 Feb 1994
*
* AUTHOR: TCS
*
* Definitions for the Virtual Power Management Device DeviceIoControl
* interface.
*
********************************************************************************
*
* CHANGE LOG:
*
* DATE REV DESCRIPTION
* ----------- --- -------------------------------------------------------------
* 01 Feb 1994 TCS Original implementation.
*
*******************************************************************************/
#ifndef _INC_PWRIOCTL
#define _INC_PWRIOCTL
#ifndef Not_VxD
#define Not_VxD
#endif
#ifndef IS_32
#define IS_32
#endif
#include <vpowerd.h>
//
// The IOCTL codes match up exactly to the order of the services in the VPOWERD
// service table (plus one). The input buffer for each IOCTL code follows the
// same structure as the corresponding VPOWERD service would expect. The
// output buffer is used to store the return value from the VPOWERD service.
//
// VPOWERD_IOCTL_GET_VERSION
// Gets the version of the installed VPOWERD device.
//
// lpvInBuffer: Not used for this operation, set to NULL.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD version.
#define VPOWERD_IOCTL_GET_VERSION 0x00000001
// VPOWERD_IOCTL_GET_APM_BIOS_VERSION
// Gets the version of the APM BIOS that VPOWERD has detected.
//
// lpvInBuffer: Not used for this operation, set to NULL.
// lpvOutBuffer: Pointer to DWORD to receive the APM BIOS version.
#define VPOWERD_IOCTL_GET_APM_BIOS_VERSION 0x00000002
// VPOWERD_IOCTL_GET_PM_LEVEL
// Gets the level of power management interaction between VPOWERD and the
// APM BIOS.
//
// lpvInBuffer: Not used for this operation, set to NULL.
// lpvOutBuffer: Pointer to DWORD to receive the current power management
// level.
#define VPOWERD_IOCTL_GET_PM_LEVEL 0x00000003
// VPOWERD_IOCTL_SET_PM_LEVEL
// Sets the level of power management interaction between VPOWERD and the
// APM BIOS.
//
// lpvInBuffer: Pointer to VPOWERD_SET_PM_LEVEL_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD return code.
#define VPOWERD_IOCTL_SET_PM_LEVEL 0x00000004
typedef struct _VPOWERD_SET_PM_LEVEL_PARAM {
DWORD PowerManagementLevel;
} VPOWERD_SET_PM_LEVEL_PARAM;
// VPOWERD_IOCTL_SET_DEVICE_STATE
// Sets the power state (e.g., OFF) of the specified device ID. Not valid
// for the system device (all devices power managed by the APM BIOS).
//
// lpvInBuffer: Pointer to VPOWERD_SET_DEVICE_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD return code.
#define VPOWERD_IOCTL_SET_DEVICE_STATE 0x00000005
typedef struct _VPOWERD_SET_DEVICE_PARAM {
POWER_DEVICE_ID PowerDeviceID;
POWER_STATE PowerState;
} VPOWERD_SET_DEVICE_PARAM;
// VPOWERD_IOCTL_RESTORE_DEFAULTS
// Reinitializes all APM BIOS power-on defaults.
//
// lpvInBuffer: Not used for this operation, set to NULL.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD return code.
#define VPOWERD_IOCTL_RESTORE_DEFAULTS 0x00000007
// VPOWERD_IOCTL_GET_STATUS
// Gets the current power status of the specified device ID.
//
// lpvInBuffer: Pointer to VPOWERD_GET_STATUS_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD return code.
#define VPOWERD_IOCTL_GET_STATUS 0x00000008
typedef struct _VPOWERD_GET_STATUS_PARAM {
POWER_DEVICE_ID PowerDeviceID;
LPPOWER_STATUS lpPowerStatus;
} VPOWERD_GET_STATUS_PARAM;
// VPOWERD_IOCTL_GET_STATE
// Gets the power state (e.g., OFF) of the specified device ID.
//
// lpvInBuffer: Pointer to VPOWERD_GET_STATE_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD return code.
#define VPOWERD_IOCTL_GET_STATE 0x00000009
typedef struct _VPOWERD_GET_STATE_PARAM {
POWER_DEVICE_ID PowerDeviceID;
LPPOWER_STATE lpPowerState;
} GET_STATE_PARAM;
// VPOWERD_IOCTL_OEM_APM_FUNCTION
// Calls an OEM defined APM BIOS extension.
//
// lpvInBuffer: Pointer to VPOWERD_OEM_APM_FUNCTION_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the VPOWERD return code.
#define VPOWERD_IOCTL_OEM_APM_FUNCTION 0x0000000A
typedef struct _VPOWERD_OEM_APM_FUNCTION_PARAM {
LPOEM_APM_REGS lpOemApmRegs;
} VPOWERD_OEM_APM_FUNCTION_PARAM;
// VPOWERD_IOCTL_W32_GET_SYSTEM_STATUS
// Gets the current power status of the system. Follows the Win32
// GetSystemPowerStatus API convention.
//
// lpvInBuffer: Pointer to VPOWERD_W32_GET_SYSTEM_STATUS_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the boolean return code.
#define VPOWERD_IOCTL_W32_GET_SYSTEM_STATUS 0x0000000D
typedef struct _VPOWERD_W32_GET_SYSTEM_STATUS_PARAM {
LPWIN32_SYSTEM_POWER_STATUS lpWin32SystemPowerStatus;
} VPOWERD_W32_GET_SYSTEM_STATUS_PARAM;
// VPOWERD_IOCTL_GET_CAPABILITIES
// Gets the capabilities bitmask of an APM 1.2 machine.
// lpvInBuffer: Pointer to VPOWERD_GET_CAPABILITIES_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the boolean return code.
#define VPOWERD_IOCTL_GET_CAPABILITIES 0x000000F
typedef struct _VPOWERD_GET_CAPABILITIES_PARAM {
PAPM_CAPABILITIES pApmCaps;
} VPOWERD_GET_CAPABILITIES_PARAM;
// VPOWERD_IOCTL_ENABLE_RING_RESUME
// Calls into the BIOS and attempts to enable the Resume on Ring capability. This is only supported on APM 1.2 machines
// lpvInBuffer: Not used for this operation, set to NULL
// lpvOutBuffer: pointer to dword to receive the VPOWERD return code. (Expect PR_FUNC_NOT_SUPPORTED on APM 1.1 or lower machines.)
#define VPOWERD_IOCTL_ENABLE_RING_RESUME 0x00000010
// VPOWERD_IOCTL_DISABLE_RING_RESUME
// Calls into the BIOS and attempts to disable the Resume on Ring capability. This is only supported on APM 1.2 machines
// lpvInBuffer: Not used for this operation, set to NULL
// lpvOutBuffer: pointer to dword to receive the VPOWERD return code. (Expect PR_FUNC_NOT_SUPPORTED on APM 1.1 or lower machines.)
#define VPOWERD_IOCTL_DISABLE_RING_RESUME 0x00000011
// VPOWERD_IOCTL_W32_GET_STATUS
// Gets the current power status of a particular battery on an APM 1.2 machine.
// BatteryNumber is the battery device ID in which your interested.
// The device ID is formed by adding 0x8000 to the *1* based battery number.
// e.g. if your interested in the first battery, BatteryNumber=0x8001
// lpvInBuffer: Pointer to VPOWERD_W32_GET_STATUS_PARAM structure.
// lpvOutBuffer: Pointer to DWORD to receive the boolean return code.
#define VPOWERD_IOCTL_W32_GET_STATUS 0x00000017
typedef struct _VPOWERD_W32_GET_STATUS_PARAM {
DWORD BatteryNumber;
LPWIN32_SYSTEM_POWER_STATUS lpWin32SystemPowerStatus;
} VPOWERD_W32_GET_STATUS_PARAM;
// VPOWERD_IOCTL_GET_RING_RESUME_STATUS
// Calls into the BIOS and attempts to determine whether Resume on Ring is enabled or disabled.
// This is only supported on APM 1.2 machines.
// lpvInBuffer: Pointer to VPOWERD_GET_RING_RESUME_STATUS_PARAM structure
// lpvOutBuffer: pointer to dword to receive the VPOWERD return code. (Expect PR_FUNC_NOT_SUPPORTED on APM 1.1 or lower machines.)
#define VPOWERD_IOCTL_GET_RING_RESUME_STATUS 0x00000019
typedef struct _VPOWERD_GET_RING_RESUME_STATUS_PARAM {
LPDWORD pStatus;
} VPOWERD_GET_RING_RESUME_STATUS_PARAM;
#endif // _INC_PWRIOCTL