vpowerd.h

来自「用于查询PC机上的USB端口是否有设备挂接上」· C头文件 代码 · 共 725 行 · 第 1/2 页

H
725
字号
    WORD OEMAPM_Reserved7;
    WORD OEMAPM_SI;
    WORD OEMAPM_Reserved8;
    WORD OEMAPM_BP;
    WORD OEMAPM_Reserved9;
    WORD OEMAPM_BX;
    WORD OEMAPM_Reserved10;
    WORD OEMAPM_DX;
    WORD OEMAPM_Reserved11;
    WORD OEMAPM_CX;
    WORD OEMAPM_Reserved12;
    WORD OEMAPM_AX;
    WORD OEMAPM_Reserved13[3];
};

struct _OEM_APM_DWORD_REGS {
    DWORD OEMAPM_EDI;
    DWORD OEMAPM_ESI;
    DWORD OEMAPM_EBP;
    DWORD OEMAPM_EBX;
    DWORD OEMAPM_EDX;
    DWORD OEMAPM_ECX;
    DWORD OEMAPM_EAX;
    DWORD OEMAPM_Reserved14;
};

typedef union _OEM_APM_REGS {
    struct _OEM_APM_BYTE_REGS ByteRegs;
    struct _OEM_APM_WORD_REGS WordRegs;
    struct _OEM_APM_DWORD_REGS DwordRegs;
}   OEM_APM_REGS;

typedef OEM_APM_REGS POWERFAR*          LPOEM_APM_REGS;

//
//  Possible power function codes that are sent to POWER_HANDLER callbacks.
//

typedef DWORD                           POWERFUNC;

#define PF_SUSPEND_PHASE1               0x00000000
#define PF_SUSPEND_PHASE2               0x00000001
#define PF_SUSPEND_INTS_OFF             0x00000002
#define PF_RESUME_INTS_OFF              0x00000003
#define PF_RESUME_PHASE2                0x00000004
#define PF_RESUME_PHASE1                0x00000005
#define PF_BATTERY_LOW                  0x00000006
#define PF_POWER_STATUS_CHANGE          0x00000007
#define PF_UPDATE_TIME                  0x00000008
#define PF_CAPABILITIES_CHANGE		0x00000009
#define PF_USER_ARRIVED			0x0000000A
#define PF_PRE_FLUSH_DISKS              0x0000000B
#define PF_USER_ARRIVED_FINISHED        0x0000000C
#define PF_APMOEMEVENT_FIRST            0x00000200
#define PF_APMOEMEVENT_LAST             0x000002FF

//
//
//

#define PFG_UI_ALLOWED                  0x00000001
#define PFG_CANNOT_FAIL                 0x00000002
#define PFG_REQUEST_VETOED              0x00000004
#define PFG_REVERSE                     0x00000008
#define PFG_STANDBY                     0x00000010
#define PFG_CRITICAL                    0x00000020
#define PFG_RESUME_AUTOMATIC		0x00000040
#define PFG_USER_ARRIVED		0x00000080
#define PFG_HIBERNATE                   0x00000100
#define PFG_FAKE_RESUME                 0x00000200
#define PFG_FORCED_REQUEST				0x00000400

//
//  Standard POWER_HANDLER priority levels.
//

#define PHPL_PBT_BROADCAST              0x40000000
#define PHPL_NTKERN                     0x60000000
#define PHPL_UNKNOWN                    0x80000000
#define PHPL_CONFIGMG                   0xC0000000
#define	PHPL_VKD			0xC4000000	// Must be after CONFIGMG
#define PHPL_PCI			0xC8000000	// Must be after CONFIGMG
#define PHPL_ACPI			0xD0000000	// Must be after CONFIGMG
//
// Warning: no page faults allowed during SUSPEND/RESUME PHASE2 unless your
// order is less than IOS.
//
#define	PHPL_IOS			0xD8000000	// Must be after ACPI
#define PHPL_PIC			0xE0000000
#define PHPL_TIMER			0xF0000000	// Must be after PIC

//
// If you want the ints off phase, you must have the A5 in the low byte
// of the priority level.
//
#define	PHPL_HANDLE_INTS_OFF		0x000000A5

//
// This is how a Power Handler gets called. Must preserve EBX, ESI, EDI, EBP.
//
typedef POWERRET (_cdecl *POWER_HANDLER)(POWERFUNC, DWORD);

#define VPOWERD_ACPI_VERSION            0x0800

//
//  VPOWERD BroadcastSystemMessage API parameter blocks.
//

typedef struct _VPOWERD_BSMAPI_HEADER {
    DWORD VBAPIH_Packet_Size;
    WORD VBAPIH_Function;
    DWORD VBAPIH_Return_Code;
}   VPOWERD_BSMAPI_HEADER, *PVPOWERD_BSMAPI_HEADER;

#define VBAPIF_W32_SET_SYSTEM_STATE     0x000D
#define VBAPIF_W32_HIBERNATE_SYSTEM     0x000E

typedef struct _VPOWERD_BSMAPI_W32_SET_SYSTEM_STATE {
    struct _VPOWERD_BSMAPI_HEADER VBWSSS_VBAPIH;
    DWORD VBWSSS_Force_Flag;
}   VPOWERD_BSMAPI_W32_SET_SYSTEM_STATE, *PVPOWERD_BSMAPI_W32_SET_SYSTEM_STATE;


/*XLATOFF*/

#ifdef	_NTDDK_
//
//  used in _VPOWERD_Transfer_Control
//
typedef	BOOL	(_cdecl *VPOWERD_PREPARE_TO_SLEEP)(SYSTEM_POWER_STATE);
typedef	BOOL	(_cdecl *VPOWERD_SLEEP)(SYSTEM_POWER_STATE);
typedef	VOID	(_cdecl *VPOWERD_SET_INDICATOR)(SYSTEM_POWER_STATE);
typedef	VOID	(_cdecl *VPOWERD_RESUME_FROM_SLEEP)(SYSTEM_POWER_STATE);
typedef	VOID	(_cdecl *VPOWERD_RESUME_COMPLETE)(VOID);
typedef	VOID	(_cdecl *VPOWERD_IDLE)(VOID);
typedef	BOOL	(_cdecl *VPOWERD_GET_TIMER)(LPPOWERTIME);
typedef	BOOL	(_cdecl *VPOWERD_SET_TIMER)(LPPOWERTIME);
typedef DWORD   (_cdecl *VPOWERD_SET_DEVICE_POWER_STATE)(DWORD, DWORD);

typedef	struct _VPOWERDHANDLER {
	ULONG                           ulVersion;
	ULONG                           ulAPMLikeVersion;
	ULONG                           ulMode;
	VPOWERD_PREPARE_TO_SLEEP        PrepareToSleep;
	VPOWERD_SET_INDICATOR		SetIndicator;
	VPOWERD_SLEEP                   Sleep;
	VPOWERD_RESUME_FROM_SLEEP       ResumeFromSleep;
	VPOWERD_RESUME_COMPLETE         ResumeComplete;
	VPOWERD_IDLE                    Idle;
	VPOWERD_GET_TIMER               GetTimer;
	VPOWERD_SET_TIMER               SetTimer;
	VPOWERD_SET_DEVICE_POWER_STATE  SetDevicePowerState;

	//
	// Note that S4 and S5 must be supported (the handler for S4 can do
	// the same as S5). So we only care about S1 thru S3
	//
	BOOLEAN				SystemCapabilities[3];
	BOOLEAN				SystemBatteriesPresent;
	BOOLEAN				LidPresent;
	BOOLEAN				PowerButtonPresent;
	BOOLEAN				SleepButtonPresent;
	BOOLEAN				S4RTCWakeCapable;
	BOOLEAN				UseS4OS;

	//
	// WARNING: we are misaligned. Don't add DWORDs here without
	// aligning first.
	//

} VPOWERDHANDLER, *PVPOWERDHANDLER;

#define	VPOWERD_MODE_APM	0x00000000
#define	VPOWERD_MODE_ACPI	0x00000001
#define	VPOWERD_MODE_LEGACY	0x00000002

#endif	// _NTDDK_

//
//  Virtual Power Management Device service prototypes.
//

BOOL
POWERFAR CDECL
VPOWERD_Get_Entry_Point(
    VOID
    );

DWORD
POWERFAR CDECL
_VPOWERD_Get_Version(
    VOID
    );

DWORD
POWERFAR CDECL
_VPOWERD_Get_APM_BIOS_Version(
    VOID
    );

DWORD
POWERFAR CDECL
_VPOWERD_Get_Power_Management_Level(
    VOID
    );

POWERRET
POWERFAR CDECL
_VPOWERD_Set_Power_Management_Level(
    DWORD Power_Management_Level
    );

#ifndef _NTDDK_
POWERRET
POWERFAR CDECL
_VPOWERD_Set_Device_Power_State(
    POWER_DEVICE_ID Power_Device_ID,
    POWER_STATE Power_State
    );

POWERRET
POWERFAR CDECL
_VPOWERD_Set_System_Power_State(
    POWER_STATE Power_State,
    DWORD Request_Type
    );
    
#endif

POWERRET
POWERFAR CDECL
_VPOWERD_Restore_Power_On_Defaults(
    VOID
    );

POWERRET
POWERFAR CDECL
_VPOWERD_Get_Power_Status(
    POWER_DEVICE_ID Power_Device_ID,
    LPPOWER_STATUS lpPower_Status
    );

#ifndef _NTDDK_
POWERRET
POWERFAR CDECL
_VPOWERD_Get_Power_State(
    POWER_DEVICE_ID Power_Device_ID,
    LPPOWER_STATE lpPower_State
    );
#endif

POWERRET
POWERFAR CDECL
_VPOWERD_OEM_APM_Function(
    LPOEM_APM_REGS lpOEM_APM_Regs
    );

POWERRET
POWERFAR CDECL
_VPOWERD_Register_Power_Handler(
    POWER_HANDLER Power_Handler,
    DWORD Priority
    );

POWERRET
POWERFAR CDECL
_VPOWERD_Deregister_Power_Handler(
    POWER_HANDLER Power_Handler
    );

BOOL
POWERFAR CDECL
_VPOWERD_W32_Get_System_Power_Status(
    LPWIN32_SYSTEM_POWER_STATUS lpWin32_System_Power_Status
    );

DWORD
POWERFAR CDECL
_VPOWERD_W32_Set_System_Power_State(
    BOOL Suspend_Flag,
    BOOL Force_Flag
    );


POWERRET
POWERFAR CDECL
_VPOWERD_Get_Capabilities(
	PAPM_CAPABILITIES pAPMCaps
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Enable_Resume_On_Ring(
	VOID
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Disable_Resume_On_Ring(
	VOID
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Set_Resume_Timer(
	LPPOWERTIME pPowerTime
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Get_Resume_Timer(
	LPPOWERTIME pPowerTime
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Disable_Resume_Timer(
	VOID
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Enable_Timer_Based_Requests(
	VOID
	);

POWERRET
POWERFAR CDECL
_VPOWERD_Disable_Timer_Based_Requests(
	VOID
	);

POWERRET
POWERFAR CDECL
_VPOWERD_W32_Get_Power_Status(
	POWER_DEVICE_ID Power_Device_ID,
	LPWIN32_SYSTEM_POWER_STATUS lpWin32_System_Power_Status
	);
    

VOID
POWERFAR CDECL
_VPOWERD_OS_Shutdown(
	VOID
    );
    
POWERRET
POWERFAR CDECL
_VPOWERD_Get_Mode(
	PDWORD Mode
        );

POWERRET 
POWERFAR CDECL
_VPOWERD_Disable_Hibernate(
	PCHAR pszReason
	);

/*XLATON*/

#endif // _INC_VPOWERD

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?