Sync with trunk rev.61910 to get latest improvements and bugfixes.
[reactos.git] / drivers / bus / acpi / compbatt / compbatt.h
1 /*
2 * PROJECT: ReactOS Composite Battery Driver
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: boot/drivers/bus/acpi/compbatt/compbatt.h
5 * PURPOSE: Main Header File
6 * PROGRAMMERS: ReactOS Portable Systems Group
7 */
8
9 #include <wdm.h>
10 #include <batclass.h>
11
12 #define COMPBATT_BATTERY_INFORMATION_PRESENT 0x04
13 #define COMPBATT_TAG_ASSIGNED 0x80
14
15 typedef struct _COMPBATT_BATTERY_DATA
16 {
17 LIST_ENTRY BatteryLink;
18 IO_REMOVE_LOCK RemoveLock;
19 PDEVICE_OBJECT DeviceObject;
20 PIRP Irp;
21 WORK_QUEUE_ITEM WorkItem;
22 BOOLEAN WaitFlag;
23 BATTERY_WAIT_STATUS WaitStatus;
24 union
25 {
26 BATTERY_WAIT_STATUS WorkerWaitStatus;
27 BATTERY_STATUS WorkerStatus;
28 };
29 ULONG Tag;
30 ULONG Flags;
31 BATTERY_INFORMATION BatteryInformation;
32 BATTERY_STATUS BatteryStatus;
33 ULONGLONG InterruptTime;
34 UNICODE_STRING BatteryName;
35 } COMPBATT_BATTERY_DATA, *PCOMPBATT_BATTERY_DATA;
36
37 typedef struct _COMPBATT_DEVICE_EXTENSION
38 {
39 PVOID ClassData;
40 ULONG NextTag;
41 LIST_ENTRY BatteryList;
42 FAST_MUTEX Lock;
43 ULONG Tag;
44 ULONG Flags;
45 BATTERY_INFORMATION BatteryInformation;
46 BATTERY_STATUS BatteryStatus;
47 ULONGLONG InterruptTime;
48 POWER_STATE PowerState;
49 ULONG LowCapacity;
50 ULONG HighCapacity;
51 PDEVICE_OBJECT AttachedDevice;
52 PDEVICE_OBJECT DeviceObject;
53 PVOID NotificationEntry;
54 } COMPBATT_DEVICE_EXTENSION, *PCOMPBATT_DEVICE_EXTENSION;
55
56 NTSTATUS
57 NTAPI
58 CompBattAddDevice(
59 IN PDRIVER_OBJECT DriverObject,
60 IN PDEVICE_OBJECT PdoDeviceObject
61 );
62
63 NTSTATUS
64 NTAPI
65 CompBattPowerDispatch(
66 IN PDEVICE_OBJECT DeviceObject,
67 IN PIRP Irp
68 );
69
70 NTSTATUS
71 NTAPI
72 CompBattPnpDispatch(
73 IN PDEVICE_OBJECT DeviceObject,
74 IN PIRP Irp
75 );
76
77 NTSTATUS
78 NTAPI
79 CompBattQueryInformation(
80 IN PCOMPBATT_DEVICE_EXTENSION FdoExtension,
81 IN ULONG Tag,
82 IN BATTERY_QUERY_INFORMATION_LEVEL InfoLevel,
83 IN OPTIONAL LONG AtRate,
84 IN PVOID Buffer,
85 IN ULONG BufferLength,
86 OUT PULONG ReturnedLength
87 );
88
89 NTSTATUS
90 NTAPI
91 CompBattQueryStatus(
92 IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
93 IN ULONG Tag,
94 IN PBATTERY_STATUS BatteryStatus
95 );
96
97 NTSTATUS
98 NTAPI
99 CompBattSetStatusNotify(
100 IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
101 IN ULONG BatteryTag,
102 IN PBATTERY_NOTIFY BatteryNotify
103 );
104
105 NTSTATUS
106 NTAPI
107 CompBattDisableStatusNotify(
108 IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension
109 );
110
111 NTSTATUS
112 NTAPI
113 CompBattQueryTag(
114 IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
115 OUT PULONG Tag
116 );
117
118 NTSTATUS
119 NTAPI
120 CompBattMonitorIrpComplete(
121 IN PDEVICE_OBJECT DeviceObject,
122 IN PIRP Irp,
123 IN PKEVENT Event
124 );
125
126 NTSTATUS
127 NTAPI
128 CompBattMonitorIrpCompleteWorker(
129 IN PCOMPBATT_BATTERY_DATA BatteryData
130 );
131
132 NTSTATUS
133 NTAPI
134 CompBattGetDeviceObjectPointer(
135 IN PUNICODE_STRING DeviceName,
136 IN ACCESS_MASK DesiredAccess,
137 OUT PFILE_OBJECT *FileObject,
138 OUT PDEVICE_OBJECT *DeviceObject
139 );
140
141 NTSTATUS
142 NTAPI
143 BatteryIoctl(
144 IN ULONG IoControlCode,
145 IN PDEVICE_OBJECT DeviceObject,
146 IN PVOID InputBuffer,
147 IN ULONG InputBufferLength,
148 IN PVOID OutputBuffer,
149 IN ULONG OutputBufferLength,
150 IN BOOLEAN InternalDeviceIoControl
151 );
152
153 extern ULONG CompBattDebug;
154
155 /* EOF */