22#define COMPBATT_TAG 'aBoC'
27#define COMPBATT_BATTERY_INFORMATION_PRESENT 0x04
28#define COMPBATT_STATUS_NOTIFY_SET 0x10
29#define COMPBATT_TAG_ASSIGNED 0x80
34#define COMPBATT_QUERY_TAG 1
35#define COMPBATT_READ_STATUS 2
40#define COMPBATT_WAIT_MIN_LOW_CAPACITY 0
41#define COMPBATT_WAIT_MAX_HIGH_CAPACITY 0x7FFFFFFF
46#define COMPBATT_ATRATE_HOUR_IN_SECS 3600
51#define COMPBATT_FRESH_STATUS_TIME 50000000
56#define COMPUTE_BATT_CAP_DELTA(LowDiff, Batt, TotalRate) \
57 ((ULONG)(((LONGLONG)LowDiff * (Batt)->BatteryStatus.Rate) / TotalRate))
62#define COMPUTE_ATRATE_DRAIN(Batt, Time) \
63 ((LONG)((Batt)->BatteryStatus.Capacity) * COMPBATT_ATRATE_HOUR_IN_SECS / Time)
68#define COMPBATT_DEBUG_INFO 0x1
69#define COMPBATT_DEBUG_TRACE 0x2
70#define COMPBATT_DEBUG_WARN 0x4
71#define COMPBATT_DEBUG_ERR 0x10
72#define COMPBATT_DEBUG_ALL_LEVELS (COMPBATT_DEBUG_INFO | COMPBATT_DEBUG_TRACE | COMPBATT_DEBUG_WARN | COMPBATT_DEBUG_ERR)
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG _In_ ULONG _Out_ PULONG ReturnedLength
_In_ ULONG _In_ PBATTERY_NOTIFY BatteryNotify
_In_ ULONG _Out_ PBATTERY_STATUS BatteryStatus
_In_ ULONG _In_ BATTERY_QUERY_INFORMATION_LEVEL _In_ LONG AtRate
enum _BATTERY_QUERY_INFORMATION_LEVEL BATTERY_QUERY_INFORMATION_LEVEL
NTSTATUS NTAPI CompBattMonitorIrpComplete(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ PVOID Context)
Queues a work item thread worker which is bound to the individual CM (Control Method) ACPI battery to...
NTSTATUS NTAPI CompBattPnpDispatch(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI CompBattQueryStatus(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension, _In_ ULONG Tag, _Out_ PBATTERY_STATUS BatteryStatus)
Queries the battery status of each individiual connected battery with the composite battery and combi...
NTSTATUS NTAPI CompBattRemoveBattery(_In_ PUNICODE_STRING BatteryName, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI CompBattQueryTag(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension, _Out_ PULONG Tag)
NTSTATUS NTAPI CompBattQueryInformation(_In_ PCOMPBATT_DEVICE_EXTENSION FdoExtension, _In_ ULONG Tag, _In_ BATTERY_QUERY_INFORMATION_LEVEL InfoLevel, _In_opt_ LONG AtRate, _In_ PVOID Buffer, _In_ ULONG BufferLength, _Out_ PULONG ReturnedLength)
NTSTATUS NTAPI CompBattSetStatusNotify(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension, _In_ ULONG BatteryTag, _In_ PBATTERY_NOTIFY BatteryNotify)
Sets a new configuration battery wait status settings of each battery. The purpose of this is so that...
struct _COMPBATT_BATTERY_DATA COMPBATT_BATTERY_DATA
struct _COMPBATT_BATTERY_DATA * PCOMPBATT_BATTERY_DATA
VOID NTAPI CompBattMonitorIrpCompleteWorker(_In_ PCOMPBATT_BATTERY_DATA BatteryData)
The brains of the battery IRP worker. It monitors the state of the IRP as well as sends the IRP down ...
struct _COMPBATT_DEVICE_EXTENSION COMPBATT_DEVICE_EXTENSION
NTSTATUS NTAPI CompBattDisableStatusNotify(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI BatteryIoctl(_In_ ULONG IoControlCode, _In_ PDEVICE_OBJECT DeviceObject, _In_ PVOID InputBuffer, _In_ ULONG InputBufferLength, _Out_ PVOID OutputBuffer, _Inout_ ULONG OutputBufferLength, _In_ BOOLEAN InternalDeviceIoControl)
NTSTATUS NTAPI CompBattPowerDispatch(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI CompBattAddDevice(_In_ PDRIVER_OBJECT DriverObject, _In_ PDEVICE_OBJECT PdoDeviceObject)
NTSTATUS NTAPI CompBattGetEstimatedTime(_Out_ PULONG Time, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
Retrieves the estimated time of the composite battery based on the power drain rate of all the batter...
struct _COMPBATT_DEVICE_EXTENSION * PCOMPBATT_DEVICE_EXTENSION
NTSTATUS NTAPI CompBattGetDeviceObjectPointer(_In_ PUNICODE_STRING DeviceName, _In_ ACCESS_MASK DesiredAccess, _Out_ PFILE_OBJECT *FileObject, _Out_ PDEVICE_OBJECT *DeviceObject)
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT _In_ PUSB_PORT_PATH _Out_ PUSB_CD_ERROR_INFORMATION _In_ USHORT _In_ PDEVICE_OBJECT PdoDeviceObject
static PLARGE_INTEGER Time
PDEVICE_OBJECT DeviceObject
BATTERY_WAIT_STATUS WorkerWaitStatus
BATTERY_STATUS WorkerStatus
BATTERY_INFORMATION BatteryInformation
BATTERY_WAIT_STATUS WaitStatus
BATTERY_STATUS BatteryStatus
UNICODE_STRING BatteryName
IO_REMOVE_LOCK RemoveLock
union _COMPBATT_BATTERY_DATA::@619 WorkerBuffer
BATTERY_WAIT_STATUS WaitNotifyStatus
PDEVICE_OBJECT DeviceObject
PDEVICE_OBJECT AttachedDevice
BATTERY_INFORMATION BatteryInformation
BATTERY_STATUS BatteryStatus
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR OutputBuffer
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR InputBuffer
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl