У меня 64-битная машина Win7 Ultimate, на которой я вызываю GetPwrCapabilities Однако он говорит мне, что состояние сна 4 (гибернация) недоступно и что нет файла гибернации. Я могу перевести компьютер в спящий режим, и есть файл спящего режима. Я делаю что-то неправильно? Есть ли что-нибудь еще, что я могу позвонить, чтобы получить точные поддерживаемые состояния сна
Спасибо
EDIT
Интересно, что powercfg -AVAILABLESTATES предоставляет правильную информацию. Кто-нибудь знает, какой API он вызывает или почему существует дискретность
Добавление кода
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Xml.Serialization;
using System.IO;
using System.Diagnostics;
class Program
{
[DllImport("PowrProf.dll")]
public static extern bool GetPwrCapabilities(out SYSTEM_POWER_CAPABILITIES lpSystemPowerCapabilities);
static void Main(string[] args)
{
SYSTEM_POWER_CAPABILITIES spc;
bool well = GetPwrCapabilities(out spc);
Stream stdOut = System.Console.OpenStandardOutput();
XmlSerializer x = new XmlSerializer(typeof(SYSTEM_POWER_CAPABILITIES));
x.Serialize(stdOut, spc);
}
}
[Serializable]
public struct SYSTEM_POWER_CAPABILITIES
{
public bool PowerButtonPresent;
public bool SleepButtonPresent;
public bool LidPresent;
public bool SystemS1;
public bool SystemS2;
public bool SystemS3;
public bool SystemS4;
public bool SystemS5;
public bool HiberFilePresent;
public bool FullWake;
public bool VideoDimPresent;
public bool ApmPresent;
public bool UpsPresent;
public bool ThermalControl;
public bool ProcessorThrottle;
public byte ProcessorMinThrottle;
public byte ProcessorMaxThrottle;
public bool FastSystemS4;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] spare2;
public bool DiskSpinDown;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] spare3;
public bool SystemBatteriesPresent;
public bool BatteriesAreShortTerm;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public BATTERY_REPORTING_SCALE[] BatteryScale;
public SYSTEM_POWER_STATE AcOnLineWake;
public SYSTEM_POWER_STATE SoftLidWake;
public SYSTEM_POWER_STATE RtcWake;
public SYSTEM_POWER_STATE MinDeviceWakeState;
public SYSTEM_POWER_STATE DefaultLowLatencyWake;
}
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
}