-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathYBattery.h
68 lines (54 loc) · 2.05 KB
/
YBattery.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
Yuryu's Battery Information, displays detailed battery info.
Copyright 2008 Yuryu / Emma Haruka Iwao
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// YBattery.h: CYBattery クラスのインターフェイス
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_YBATTERY_H__D9369154_8921_47BE_8B46_8BA9DE7BD304__INCLUDED_)
#define AFX_YBATTERY_H__D9369154_8921_47BE_8B46_8BA9DE7BD304__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "stdafx.h"
class CYBattery
{
public:
CYBattery() = delete;
CYBattery(LPCTSTR devicePath);
~CYBattery();
bool Open();
bool QueryInfoString(const BATTERY_QUERY_INFORMATION_LEVEL level, const CStringW& csPlaceholder, CStringW& csOutStr);
template <typename T> bool QueryInfo(const BATTERY_QUERY_INFORMATION_LEVEL level, T& out);
bool QueryStatus(BATTERY_STATUS& batStat);
ULONG GetNewTag();
private:
bool CloseIfOpen();
ULONG m_ulBatTag;
HANDLE m_hBattery;
const CString m_csDevicePath;
};
template<typename T>
bool CYBattery::QueryInfo(const BATTERY_QUERY_INFORMATION_LEVEL level, T& out)
{
BATTERY_QUERY_INFORMATION batQueryInfo = {
.BatteryTag = m_ulBatTag,
.InformationLevel = level,
.AtRate = 0,
};
DWORD dwBytesReturned;
const BOOL bSucceeded = DeviceIoControl(m_hBattery, IOCTL_BATTERY_QUERY_INFORMATION,
&batQueryInfo, sizeof(batQueryInfo), &out, sizeof(out),
&dwBytesReturned, nullptr);
return bSucceeded;
}
#endif // !defined(AFX_YBATTERY_H__D9369154_8921_47BE_8B46_8BA9DE7BD304__INCLUDED_)