Tech Support > Microsoft Windows > Drivers > Thermal Zone Information in ACPI
Thermal Zone Information in ACPI
Posted by Garey Engle on January 17th, 2007


I am trying to read the system temperature through ACPI on an IBM T42
laptop. I have identified the thermal zone device and can get the device
object pointer to it. I am using IoBuildDeviceIoControlRequest to build an
IRP to send to the device. However, when I send the IRP the returned status
is STATUS_NOT_SUPPORTED. I disassembled the ACPI namespace on the target
computer to verify that that system supports the _TMP method. What am I
missing? I am using the following code:

#define ACPI_METHOD__TMP (ULONG)('PMT_')

RtlZeroMemory( &inputBuffer, sizeof(ACPI_EVAL_INPUT_BUFFER) );
inputBuffer.MethodNameAsUlong = ACPI_METHOD__TMP;
inputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIGNATURE;

// Initialize wait event
KeInitializeEvent(&Event, NotificationEvent, FALSE);

// Build IOCTL IRP
Irp = IoBuildDeviceIoControlRequest(
IOCTL_ACPI_EVAL_METHOD,
pDevExt->pThermalDO,
&inputBuffer,
sizeof(ACPI_EVAL_INPUT_BUFFER),
&outputBuffer,
sizeof(ACPI_EVAL_OUTPUT_BUFFER),
FALSE,
&Event,
&IoStatus);

nReturnStat = IoCallDriver(pDevExt->pThermalDO, Irp);

// nReturnStat = STATUS_NOT_SUPPORTED everytime I make this call





Similar Posts