[CMBATT] Fix battery Tag

0 (ie BATTERY_TAG_INVALID) is not a valid battery tag.
First battery must have a tag of 1.
This commit is contained in:
Hervé Poussineau 2024-11-12 20:39:48 +01:00
parent 6aa11ac494
commit 81860b482a

View file

@ -568,7 +568,6 @@ CmBattQueryTag(IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
{ {
PDEVICE_OBJECT PdoDevice; PDEVICE_OBJECT PdoDevice;
ULONG StaData; ULONG StaData;
ULONG NewTag;
NTSTATUS Status; NTSTATUS Status;
PAGED_CODE(); PAGED_CODE();
if (CmBattDebug & (CMBATT_ACPI_WARNING | CMBATT_GENERIC_INFO)) if (CmBattDebug & (CMBATT_ACPI_WARNING | CMBATT_GENERIC_INFO))
@ -587,12 +586,12 @@ CmBattQueryTag(IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
if (StaData & ACPI_STA_BATTERY_PRESENT) if (StaData & ACPI_STA_BATTERY_PRESENT)
{ {
/* Do we not have a tag yet? */ /* Do we not have a tag yet? */
if (!DeviceExtension->Tag) if (DeviceExtension->Tag == BATTERY_TAG_INVALID)
{ {
/* Set the new tag value, reset tags if we reached the maximum */ /* Set the new tag value, reset tags if we reached the maximum */
NewTag = DeviceExtension->TagData; if (++DeviceExtension->TagData == BATTERY_TAG_INVALID)
if (DeviceExtension->TagData++ == 0xFFFFFFFF) NewTag = 1; DeviceExtension->TagData = 1;
DeviceExtension->Tag = NewTag; DeviceExtension->Tag = DeviceExtension->TagData;
if (CmBattDebug & CMBATT_GENERIC_INFO) if (CmBattDebug & CMBATT_GENERIC_INFO)
DbgPrint("CmBattQueryTag - New Tag: (%d)\n", DeviceExtension->Tag); DbgPrint("CmBattQueryTag - New Tag: (%d)\n", DeviceExtension->Tag);
@ -608,7 +607,7 @@ CmBattQueryTag(IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
else else
{ {
/* No battery, so no tag */ /* No battery, so no tag */
DeviceExtension->Tag = 0; DeviceExtension->Tag = BATTERY_TAG_INVALID;
Status = STATUS_NO_SUCH_DEVICE; Status = STATUS_NO_SUCH_DEVICE;
} }
} }