42 DbgPrint(
"CompBatt: ENTERING RemoveBatteryFromList\n");
46 ListHead = &DeviceExtension->BatteryList;
47 NextEntry = ListHead->
Flink;
48 while (NextEntry != ListHead)
67 NextEntry = NextEntry->
Flink;
86 DbgPrint(
"CompBatt: ENTERING IsBatteryAlreadyOnList\n");
90 ListHead = &DeviceExtension->BatteryList;
91 NextEntry = ListHead->
Flink;
92 while (NextEntry != ListHead)
104 NextEntry = NextEntry->
Flink;
126 DbgPrint(
"CompBatt: ENTERING AddNewBattery \"%w\" \n", BatteryName->Buffer);
192 DbgPrint(
"CompBatt: Couldn't allocate new battery Irp\n");
200 DbgPrint(
"CompBattAddNewBattery: Failed to get device Object. status = %lx\n",
214 DbgPrint(
"CompBatt: Couldn't allocate new battery node\n");
242 DeviceExtension->Flags = 0;
271 if (!LinkString.
Length)
break;
284 DbgPrint(
"CompBatt: Couldn't get list of batteries\n");
306 DbgPrint(
"CompBatt: Received notification of battery arrival\n");
313 DbgPrint(
"CompBatt: Received notification of battery removal\n");
367 DbgPrint(
"CompBattAddDevice: Could not attach to LowerDevice.\n");
379 DeviceExtension->
Flags = 0;
386 MiniportInfo.
Context = DeviceExtension;
432 (
PVOID)&GUID_DEVICE_BATTERY,
441 DbgPrint(
"CompBatt: Successfully registered for PnP notification\n");
448 DbgPrint(
"CompBatt: Couldn't register for PnP notification - %x\n",
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
#define BATTERY_CLASS_MAJOR_VERSION
PBCLASS_QUERY_INFORMATION_CALLBACK BCLASS_QUERY_INFORMATION
PBCLASS_SET_STATUS_NOTIFY_CALLBACK BCLASS_SET_STATUS_NOTIFY
PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK BCLASS_DISABLE_STATUS_NOTIFY
#define BATTERY_CLASS_MINOR_VERSION
PBCLASS_QUERY_STATUS_CALLBACK BCLASS_QUERY_STATUS
#define BATTERY_TAG_INVALID
PBCLASS_QUERY_TAG_CALLBACK BCLASS_QUERY_TAG
BCLASSAPI NTSTATUS NTAPI BatteryClassStatusNotify(_In_ PVOID ClassData)
BCLASSAPI NTSTATUS NTAPI BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo, PVOID *ClassData)
#define FILE_DEVICE_SECURE_OPEN
NTSTATUS NTAPI CompBattQueryInformation(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension, _In_ ULONG Tag, _In_ BATTERY_QUERY_INFORMATION_LEVEL InfoLevel, _In_opt_ LONG AtRate, _In_ PVOID Buffer, _In_ ULONG BufferLength, _Out_ PULONG ReturnedLength)
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 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 CompBattQueryTag(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension, _Out_ PULONG Tag)
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...
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 ...
NTSTATUS NTAPI CompBattDisableStatusNotify(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
#define COMPBATT_DEBUG_WARN
#define COMPBATT_DEBUG_ERR
NTSTATUS NTAPI CompBattGetDeviceObjectPointer(_In_ PUNICODE_STRING DeviceName, _In_ ACCESS_MASK DesiredAccess, _Out_ PFILE_OBJECT *FileObject, _Out_ PDEVICE_OBJECT *DeviceObject)
#define COMPBATT_DEBUG_TRACE
NTSTATUS NTAPI CompBattPnpDispatch(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI CompBattRemoveBattery(_In_ PUNICODE_STRING BatteryName, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI CompBattPnpEventHandler(_In_ PDEVICE_INTERFACE_CHANGE_NOTIFICATION Notification, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
BOOLEAN NTAPI IsBatteryAlreadyOnList(_In_ PCUNICODE_STRING BatteryName, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI CompBattGetBatteries(_In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI CompBattAddNewBattery(_In_ PUNICODE_STRING BatteryName, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
PCOMPBATT_BATTERY_DATA NTAPI RemoveBatteryFromList(_In_ PCUNICODE_STRING BatteryName, _In_ PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
NTSTATUS NTAPI CompBattPowerDispatch(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
NTSTATUS NTAPI CompBattAddDevice(_In_ PDRIVER_OBJECT DriverObject, _In_ PDEVICE_OBJECT PdoDeviceObject)
#define STATUS_NOT_SUPPORTED
#define NT_SUCCESS(StatCode)
const GUID GUID_DEVICE_INTERFACE_ARRIVAL
const GUID GUID_DEVICE_INTERFACE_REMOVAL
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define ExAllocatePoolWithTag(hernya, size, tag)
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
#define InitializeListHead(ListHead)
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
_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
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define IRP_MN_SURPRISE_REMOVAL
#define IoSkipCurrentIrpStackLocation(Irp)
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
VOID NTAPI IoDetachDevice(IN PDEVICE_OBJECT TargetDevice)
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI IoGetDeviceInterfaces(IN CONST GUID *InterfaceClassGuid, IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, IN ULONG Flags, OUT PWSTR *SymbolicLinkList)
#define IoCompleteRequest
PIRP NTAPI IoAllocateIrp(IN CCHAR StackSize, IN BOOLEAN ChargeQuota)
NTSTATUS NTAPI IoCreateSymbolicLink(IN PUNICODE_STRING SymbolicLinkName, IN PUNICODE_STRING DeviceName)
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
NTSTATUS NTAPI IoRegisterPlugPlayNotification(_In_ IO_NOTIFICATION_EVENT_CATEGORY EventCategory, _In_ ULONG EventCategoryFlags, _In_opt_ PVOID EventCategoryData, _In_ PDRIVER_OBJECT DriverObject, _In_ PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine, _Inout_opt_ PVOID Context, _Out_ PVOID *NotificationEntry)
#define FILE_DEVICE_BATTERY
BCLASS_QUERY_INFORMATION QueryInformation
BCLASS_SET_STATUS_NOTIFY SetStatusNotify
BCLASS_SET_INFORMATION SetInformation
PUNICODE_STRING DeviceName
BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify
BCLASS_QUERY_STATUS QueryStatus
BCLASS_QUERY_TAG QueryTag
PDEVICE_OBJECT DeviceObject
UNICODE_STRING BatteryName
IO_REMOVE_LOCK RemoveLock
PDEVICE_OBJECT DeviceObject
PDEVICE_OBJECT AttachedDevice
union _IO_STACK_LOCATION::@1583 Parameters
struct _IO_STACK_LOCATION::@4015::@4054 Others
struct _LIST_ENTRY * Flink
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_DEVICE_NOT_CONNECTED
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PWDFDEVICE_INIT _In_ PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING SymbolicLinkName
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
#define IsEqualGUIDAligned(guid1, guid2)
#define ExInitializeWorkItem(Item, Routine, Context)
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetNextIrpStackLocation(_In_ PIRP Irp)
#define IoAcquireRemoveLock(RemoveLock, Tag)
FORCEINLINE VOID IoSetNextIrpStackLocation(_Inout_ PIRP Irp)
#define IoReleaseRemoveLockAndWait(_RemoveLock, _Tag)
#define IoInitializeRemoveLock(Lock, AllocateTag, MaxLockedMinutes, HighWatermark)
#define IRP_MN_CANCEL_STOP_DEVICE
#define IRP_MN_QUERY_PNP_DEVICE_STATE
#define PNP_DEVICE_NOT_DISABLEABLE
#define IRP_MN_START_DEVICE
@ EventCategoryDeviceInterfaceChange
#define IRP_MN_CANCEL_REMOVE_DEVICE
DRIVER_NOTIFICATION_CALLBACK_ROUTINE * PDRIVER_NOTIFICATION_CALLBACK_ROUTINE
#define ObDereferenceObject
#define ObReferenceObject