WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

System UDFs

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

udfGetPwrCapabilities

 Keywords: System S4 GetPwrCapabilities Hibernate Hibernation Power DllCall PowrProf.dll

Question:

How can I check if hibernation has been enabled/configured on a system.I'm seeking information for both XP and Win7.

Answer:

#DefineFunction udfGetPwrCapabilities()
   structcnt = 29
   structsize =  139
   arrSystemPowerCapabilities = ArrDimension(structcnt)
   dllfilename = DirWindows(1):'PowrProf.dll'
   lpSystemPowerCapabilities = BinaryAlloc(structsize)
   BinaryEodSet( lpSystemPowerCapabilities, structsize )
   retval = DllCall( dllfilename, long:"GetPwrCapabilities", lpbinary:lpSystemPowerCapabilities)
   If retval == 0
      Pause('GetPwrCapabilities Failed',DllLastError())
      BinaryFree(lpSystemPowerCapabilities)
      Return 0
   EndIf
   BinaryEodSet( lpSystemPowerCapabilities, BinaryEodGet(lpSystemPowerCapabilities) )

   ;Pause('DEBUG',BinaryEodGet(lpSystemPowerCapabilities))

   arrSystemPowerCapabilities[0] = BinaryPeek(lpSystemPowerCapabilities, 0 ) ;PowerButtonPresent
   arrSystemPowerCapabilities[1] = BinaryPeek(lpSystemPowerCapabilities, 4 ) ;SleepButtonPresent
   arrSystemPowerCapabilities[2] = BinaryPeek(lpSystemPowerCapabilities, 8 ) ;LidPresent
   arrSystemPowerCapabilities[3] = BinaryPeek(lpSystemPowerCapabilities, 12 ) ;SystemS1
   arrSystemPowerCapabilities[4] = BinaryPeek(lpSystemPowerCapabilities, 16 ) ;SystemS2
   arrSystemPowerCapabilities[5] = BinaryPeek(lpSystemPowerCapabilities, 20 ) ;SystemS3
   arrSystemPowerCapabilities[6] = BinaryPeek(lpSystemPowerCapabilities, 24 ) ;SystemS4
   arrSystemPowerCapabilities[7] = BinaryPeek(lpSystemPowerCapabilities, 28 ) ;SystemS5
   arrSystemPowerCapabilities[8] = BinaryPeek(lpSystemPowerCapabilities, 32 ) ;HiberFilePresent
   arrSystemPowerCapabilities[9] = BinaryPeek(lpSystemPowerCapabilities, 36 ) ;FullWake
   arrSystemPowerCapabilities[10] = BinaryPeek(lpSystemPowerCapabilities, 40 ) ;VideoDimPresent
   arrSystemPowerCapabilities[11] = BinaryPeek(lpSystemPowerCapabilities, 44 ) ;ApmPresent
   arrSystemPowerCapabilities[12] = BinaryPeek(lpSystemPowerCapabilities, 48 ) ;UpsPresent
   arrSystemPowerCapabilities[13] = BinaryPeek(lpSystemPowerCapabilities, 52 ) ;ThermalControl
   arrSystemPowerCapabilities[14] = BinaryPeek(lpSystemPowerCapabilities, 56 ) ;ProcessorThrottle
   arrSystemPowerCapabilities[15] = BinaryPeek(lpSystemPowerCapabilities, 60 ) ;ProcessorMinThrottle
   arrSystemPowerCapabilities[16] = BinaryPeek(lpSystemPowerCapabilities, 64 ) ;ProcessorMaxThrottle
   arrSystemPowerCapabilities[17] = BinaryPeek(lpSystemPowerCapabilities, 68 ) ;FastSystemS4
   arrSystemPowerCapabilities[18] = 0;BinaryPeek(lpSystemPowerCapabilities, 72 ) ;spare2 (3bytes)
   arrSystemPowerCapabilities[19] = BinaryPeek(lpSystemPowerCapabilities, 75 ) ;DiskSpinDown
   arrSystemPowerCapabilities[20] = 0;BinaryPeek(lpSystemPowerCapabilities, 79 ) ;spare3  (8bytes)
   arrSystemPowerCapabilities[21] = BinaryPeek(lpSystemPowerCapabilities, 87 ) ;SystemBatteriesPresent
   arrSystemPowerCapabilities[22] = BinaryPeek(lpSystemPowerCapabilities, 91 ) ;BatteriesAreShortTerm
   arrSystemPowerCapabilities[23] = 0;BinaryPeek(lpSystemPowerCapabilities, 95 ) ;BatteryScale (24 bytes)
   arrSystemPowerCapabilities[24] = BinaryPeek(lpSystemPowerCapabilities, 119 ) ;AcOnLineWake
   arrSystemPowerCapabilities[25] = BinaryPeek(lpSystemPowerCapabilities, 123 ) ;SoftLidWake
   arrSystemPowerCapabilities[26] = BinaryPeek(lpSystemPowerCapabilities, 127 ) ;RtcWake
   arrSystemPowerCapabilities[27] = BinaryPeek(lpSystemPowerCapabilities, 131 ) ;MinDeviceWakeState
   arrSystemPowerCapabilities[28] = BinaryPeek(lpSystemPowerCapabilities, 135 ) ;DefaultLowLatencyWake


   BinaryFree(lpSystemPowerCapabilities)

   Return arrSystemPowerCapabilities
   ;***************************************************************************
   ;**
   ;**   API DOCUMENTATION
   ;**
   ;***************************************************************************

   ;GetPwrCapabilities(
   ;  __out  PSYSTEM_POWER_CAPABILITIES lpSystemPowerCapabilities
   ;);

   ;typedef struct {
   ;  4 BOOLEAN                 PowerButtonPresent;
   ;  4 BOOLEAN                 SleepButtonPresent;
   ;  4 BOOLEAN                 LidPresent;
   ;  4 BOOLEAN                 SystemS1;
   ;  4 BOOLEAN                 SystemS2;
   ;  4 BOOLEAN                 SystemS3;
   ;  4 BOOLEAN                 SystemS4;
   ;  4 BOOLEAN                 SystemS5;
   ;  4 BOOLEAN                 HiberFilePresent;
   ;  4 BOOLEAN                 FullWake;
   ;  4 BOOLEAN                 VideoDimPresent;
   ;  4 BOOLEAN                 ApmPresent;
   ;  4 BOOLEAN                 UpsPresent;
   ;  4 BOOLEAN                 ThermalControl;
   ;  4 BOOLEAN                 ProcessorThrottle;
   ;  4 BYTE                    ProcessorMinThrottle;
   ;  4 BYTE                    ProcessorMaxThrottle;
   ;  4 BOOLEAN                 FastSystemS4;
   ;  3 BYTE                    spare2[3];
   ;  4 BOOLEAN                 DiskSpinDown;
   ;  8 BYTE                    spare3[8];
   ;  4 BOOLEAN                 SystemBatteriesPresent;
   ;  4 BOOLEAN                 BatteriesAreShortTerm;
   ;  24 BATTERY_REPORTING_SCALE BatteryScale[3];
   ;  4 SYSTEM_POWER_STATE      AcOnLineWake;
   ;  4 SYSTEM_POWER_STATE      SoftLidWake;
   ;  4 SYSTEM_POWER_STATE      RtcWake;
   ;  4 SYSTEM_POWER_STATE      MinDeviceWakeState;
   ;  4 SYSTEM_POWER_STATE      DefaultLowLatencyWake;
   ;} SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES

;   public struct BATTERY_REPORTING_SCALE{
;   public UInt32 Granularity;
;   public UInt32 Capacity;
;   }
;
;   public enum SYSTEM_POWER_STATE{
;   PowerSystemUnspecified = 0,
;   PowerSystemWorking = 1,
;   PowerSystemSleeping1 = 2,
;   PowerSystemSleeping2 = 3,
;   PowerSystemSleeping3 = 4,
;   PowerSystemHibernate = 5,
;   PowerSystemShutdown = 6,
;   PowerSystemMaximum = 7
;   }
#EndFunction

; If the computer supports hibernation, then power state S4 is true and the file Hiberfil.sys
; is present on the system.
arrSystemPowerCapabilities = udfGetPwrCapabilities()
HiberFilePresent = arrSystemPowerCapabilities[8]
If HiberFilePresent Then Pause("HiberFilePresent","The system hibernation file is present.")
Else Pause("HiberFilePresent","The system hibernation file is NOT present.")

;If this member is TRUE, the operating system supports sleep state S4 (hibernation).
SystemS4 = arrSystemPowerCapabilities[6]
If SystemS4 Then Pause("SystemS4","The operating system supports sleep state S4 (hibernation).")
Else Pause("SystemS4","The operating system DOES NOT support sleep state S4 (hibernation).")

Article ID:   W18401
Filename:   udfGetPwrCapabilities.txt
File Created: 2011:09:12:08:40:14
Last Updated: 2011:09:12:08:40:14