batclass.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #include <winapifamily.h>
  6. #include <poclass.h>
  7. DEFINE_GUID (BATTERY_STATUS_WMI_GUID, 0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a);
  8. DEFINE_GUID (BATTERY_RUNTIME_WMI_GUID, 0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec);
  9. DEFINE_GUID (BATTERY_TEMPERATURE_WMI_GUID, 0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2);
  10. DEFINE_GUID (BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID, 0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05);
  11. DEFINE_GUID (BATTERY_CYCLE_COUNT_WMI_GUID, 0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71);
  12. DEFINE_GUID (BATTERY_STATIC_DATA_WMI_GUID, 0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55);
  13. DEFINE_GUID (BATTERY_STATUS_CHANGE_WMI_GUID, 0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64);
  14. DEFINE_GUID (BATTERY_TAG_CHANGE_WMI_GUID, 0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88);
  15. #ifndef _BATCLASS_
  16. #define _BATCLASS_
  17. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  18. #ifndef _WINDOWS_
  19. typedef NTSTATUS (BCLASS_QUERY_TAG_CALLBACK) (PVOID Context, PULONG BatteryTag);
  20. typedef BCLASS_QUERY_TAG_CALLBACK *PBCLASS_QUERY_TAG_CALLBACK;
  21. typedef NTSTATUS (BCLASS_QUERY_INFORMATION_CALLBACK) (PVOID Context, ULONG BatteryTag, BATTERY_QUERY_INFORMATION_LEVEL Level, LONG AtRate, PVOID Buffer, ULONG BufferLength, PULONG ReturnedLength);
  22. typedef BCLASS_QUERY_INFORMATION_CALLBACK *PBCLASS_QUERY_INFORMATION_CALLBACK;
  23. typedef NTSTATUS (BCLASS_QUERY_STATUS_CALLBACK) (PVOID Context, ULONG BatteryTag, PBATTERY_STATUS BatteryStatus);
  24. typedef BCLASS_QUERY_STATUS_CALLBACK *PBCLASS_QUERY_STATUS_CALLBACK;
  25. typedef struct {
  26. ULONG PowerState;
  27. ULONG LowCapacity;
  28. ULONG HighCapacity;
  29. } BATTERY_NOTIFY,*PBATTERY_NOTIFY;
  30. typedef NTSTATUS (BCLASS_SET_STATUS_NOTIFY_CALLBACK) (PVOID Context, ULONG BatteryTag, PBATTERY_NOTIFY BatteryNotify);
  31. typedef BCLASS_SET_STATUS_NOTIFY_CALLBACK *PBCLASS_SET_STATUS_NOTIFY_CALLBACK;
  32. typedef NTSTATUS (BCLASS_SET_INFORMATION_CALLBACK) (PVOID Context, ULONG BatteryTag, BATTERY_SET_INFORMATION_LEVEL Level, PVOID Buffer);
  33. typedef BCLASS_SET_INFORMATION_CALLBACK *PBCLASS_SET_INFORMATION_CALLBACK;
  34. typedef NTSTATUS (BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK) (PVOID Context);
  35. typedef BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK *PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK;
  36. typedef PBCLASS_QUERY_TAG_CALLBACK BCLASS_QUERY_TAG;
  37. typedef PBCLASS_QUERY_INFORMATION_CALLBACK BCLASS_QUERY_INFORMATION;
  38. typedef PBCLASS_QUERY_STATUS_CALLBACK BCLASS_QUERY_STATUS;
  39. typedef PBCLASS_SET_STATUS_NOTIFY_CALLBACK BCLASS_SET_STATUS_NOTIFY;
  40. typedef PBCLASS_SET_INFORMATION_CALLBACK BCLASS_SET_INFORMATION;
  41. typedef PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK BCLASS_DISABLE_STATUS_NOTIFY;
  42. typedef struct {
  43. USHORT MajorVersion;
  44. USHORT MinorVersion;
  45. PVOID Context;
  46. BCLASS_QUERY_TAG QueryTag;
  47. BCLASS_QUERY_INFORMATION QueryInformation;
  48. BCLASS_SET_INFORMATION SetInformation;
  49. BCLASS_QUERY_STATUS QueryStatus;
  50. BCLASS_SET_STATUS_NOTIFY SetStatusNotify;
  51. BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify;
  52. PDEVICE_OBJECT Pdo;
  53. PUNICODE_STRING DeviceName;
  54. } BATTERY_MINIPORT_INFO,*PBATTERY_MINIPORT_INFO;
  55. #define BATTERY_CLASS_MAJOR_VERSION 0x0001
  56. #define BATTERY_CLASS_MINOR_VERSION 0x0000
  57. typedef struct _BATTERY_WMI_STATUS {
  58. ULONG Tag;
  59. ULONG RemainingCapacity;
  60. LONG ChargeRate;
  61. LONG DischargeRate;
  62. ULONG Voltage;
  63. BOOLEAN PowerOnline;
  64. BOOLEAN Charging;
  65. BOOLEAN Discharging;
  66. BOOLEAN Critical;
  67. } BATTERY_WMI_STATUS,*PBATTERY_WMI_STATUS;
  68. typedef struct _BATTERY_WMI_RUNTIME {
  69. ULONG Tag;
  70. ULONG EstimatedRuntime;
  71. } BATTERY_WMI_RUNTIME,*PBATTERY_WMI_RUNTIME;
  72. typedef struct _BATTERY_WMI_TEMPERATURE {
  73. ULONG Tag;
  74. ULONG Temperature;
  75. } BATTERY_WMI_TEMPERATURE,*PBATTERY_WMI_TEMPERATURE;
  76. typedef struct _BATTERY_WMI_FULL_CHARGED_CAPACITY {
  77. ULONG Tag;
  78. ULONG FullChargedCapacity;
  79. } BATTERY_WMI_FULL_CHARGED_CAPACITY,*PBATTERY_WMI_FULL_CHARGED_CAPACITY;
  80. typedef struct _BATTERY_WMI_CYCLE_COUNT {
  81. ULONG Tag;
  82. ULONG CycleCount;
  83. } BATTERY_WMI_CYCLE_COUNT,*PBATTERY_WMI_CYCLE_COUNT;
  84. typedef struct _BATTERY_WMI_STATIC_DATA {
  85. ULONG Tag;
  86. WCHAR ManufactureDate[25];
  87. BATTERY_REPORTING_SCALE Granularity [4];
  88. ULONG Capabilities;
  89. UCHAR Technology;
  90. ULONG Chemistry;
  91. ULONG DesignedCapacity;
  92. ULONG DefaultAlert1;
  93. ULONG DefaultAlert2;
  94. ULONG CriticalBias;
  95. WCHAR Strings[1];
  96. } BATTERY_WMI_STATIC_DATA,*PBATTERY_WMI_STATIC_DATA;
  97. typedef struct _BATTERY_WMI_STATUS_CHANGE {
  98. ULONG Tag;
  99. BOOLEAN PowerOnline;
  100. BOOLEAN Charging;
  101. BOOLEAN Discharging;
  102. BOOLEAN Critical;
  103. } BATTERY_WMI_STATUS_CHANGE,*PBATTERY_WMI_STATUS_CHANGE;
  104. typedef struct _BATTERY_TAG_CHANGE {
  105. ULONG Tag;
  106. } BATTERY_TAG_CHANGE,*PBATTERY_TAG_CHANGE;
  107. #ifndef BATTERYCLASS
  108. #define BATTERYCLASSAPI DECLSPEC_IMPORT
  109. #else
  110. #define BATTERYCLASSAPI
  111. #endif
  112. NTSTATUS BATTERYCLASSAPI BatteryClassInitializeDevice (PBATTERY_MINIPORT_INFO MiniportInfo, PVOID *ClassData);
  113. NTSTATUS BATTERYCLASSAPI BatteryClassUnload (PVOID ClassData);
  114. NTSTATUS BATTERYCLASSAPI BatteryClassIoctl (PVOID ClassData, PIRP Irp);
  115. NTSTATUS BATTERYCLASSAPI BatteryClassSystemControl (PVOID ClassData, PVOID WmiLibContext, PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Disposition);
  116. NTSTATUS BATTERYCLASSAPI BatteryClassQueryWmiDataBlock (PVOID ClassData, PDEVICE_OBJECT DeviceObject, PIRP Irp, ULONG GuidIndex, PULONG InstanceLengthArray, ULONG OutBufferSize, PUCHAR Buffer);
  117. NTSTATUS BATTERYCLASSAPI BatteryClassStatusNotify (PVOID ClassData);
  118. #endif
  119. #endif
  120. #endif