Bug Check Codes


Windows Driver Kit: Driver Development Tools
Bug Check 0xA0: INTERNAL_POWER_ERROR

The INTERNAL_POWER_ERROR bug check has a value of 0x000000A0. This bug check indicates that the power policy manager experienced a fatal error.

Parameters

The following parameters appear on the blue screen. Parameter 1 indicates the type of violation. The meaning of the other parameters depends on the value of Parameter 1.

Parameter 1Parameter 2Parameter 3Parameter 4Cause
0x11: A device has overrun its maximum number of reference counts.

2, 3, or 4: (Windows Server 2003, Windows XP, and Windows 2000 only ) Too many inrush power IRPs have been queued.

5: (Windows Server 2003, Windows XP, and Windows 2000 only) The power IRP has been sent to a passive level device object.

Except when Parameter 2 is equal to 5, this parameter indicates the maximum number of pending IRPs that are allowed.

If Parameter 2 is equal to 5, this parameter is reserved.

Reserved An error occurred during the handling of the power I/O request packet (IRP).
0x2ReservedReserved Reserved An internal failure has occurred while attempting to process a power event.
0x3The expected checksum The actual checksum The line number of the failure The checksum for a hibernation context page does not match its expected checksum.
0x4The expected checksum The actual checksum The line number of the failureThe checksum for a page about to be written to the hibernation file does not match its expected checksum.
0x5Reserved Reserved Reserved An unknown shutdown code has been sent to the system shutdown handler.
0x7ReservedReserved Reserved An unhandled exception has occurred.
0x8A fatal error occurred while processing a system power event.

(See the following table for more details.)

When Parameter 1 is0x8, a fatal error occurred while processing a system power event. In this situation, Parameter 2 indicates the cause of the error. The meaning of the other parameters depends on the value of Parameter 2.

Parameter 2Parameter 3Parameter 4Cause
0x100The device object The address of the POWER_CHANNEL_SUMMARY structure (a record of device object states) An unknown device type is being processed.
0x101 Exception pointer ReservedAn unhandled exception occurred.
0x102 The address of the DUMP_INITIALIZATION_CONTEXT structure, which contains the information that is passed from the system to the disk dump driver during the driver's initializationThe address of the POP_HIBER_CONTEXT structure, which contains information about the state of the computer before hibernationThe hibernation working buffer size is not page-aligned.
0x103 The address of the POP_HIBER_CONTEXT structureReservedSome working pages were not accounted for during the hibernation process.
0x104 The address of the POP_HIBER_CONTEXT structureReserved An attempt was made to map internal hibernation memory while the internal memory structures were locked.
0x105 The address of the POP_HIBER_CONTEXT structureReserved An attempt was made to map internal hibernation memory with an unsupported memory type flag.
0x106 The MDL Reserved A memory descriptor list (MDL) was created during the hibernation process that describes memory that is not paged-aligned.
0x107 The address of the POP_HIBER_CONTEXT structureThe address of the PO_MEMORY_RANGE_ARRAY structure A data mismatch occurred in the internal hibernation data structures.
0x108 The address of the POP_HIBER_CONTEXT structureReserved The disk subsystem failed to properly write part of the hibernation file.
0x109 The expected checksum The actual checksum The checksum for the processor state data does not match its expected checksum.
0x10A The address of the POP_HIBER_CONTEXT structureThe NTSTATUS failure code The disk subsystem failed to properly write part of the hibernation file.
0x200 The device objectThe address of the DEVICE_OBJECT_POWER_EXTENSION notification structure An unknown device type is being checked for an idle state.
0x300 The device object The IRP An unknown status was returned from a battery power IRP.
0x301 The device object The IRPThe battery has entered an unknown state.
0x400 The IRP stack locationThe device object A device has overrun its maximum number of reference counts.
0x401,
0x402,
or
0x403
The pending IRP list The device object (Windows Server 2003, Windows XP, and Windows 2000 only) Too many inrush power IRPs have been queued.
0x404 The IRP stack locationThe device object (Windows Server 2003, Windows XP, and Windows 2000 only) A power IRP has been sent to a passive level device object.
0x500 The IRP The device object An unknown status was returned from a thermal power IRP.

Cause

For more information about the exact cause for the INTERNAL_POWER_ERROR bug check, see the tables in the Parameters section above.

Resolving the Problem

The following procedures will help you debug certain instances of this bug check.

Debugging bug check 0xA0 when Parameter 1 equals 0x2
  1. Examine the stack. Look for the ntoskrnl!PopExceptionFilter function. This function contains the following code as its first argument.

     (error_code << 16) | _LINE_

    If the caller is PopExceptionFilter, the first argument to this function is of type PEXCEPTION_POINTERS. Note the value of this argument.

  2. Use the dt (Display Type) debugger command and specify the value that you found in the previous step as argument.

    dt nt!_EXCEPTION_POINTERS argument 

    . This command displays the structure. Note the address of the context record.

  3. Use the .cxr (Display Context Record) command and specify the context record that you found in the previous step as record.

    .cxr record 

    . This command sets the register context to the proper value.

  4. Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .

Debugging bug check 0xA0 when Parameter 1 equals 0x7
  1. Examine the stack. Look for the ntoskrnl!PopExceptionFilter function. The first argument to this function is of type PEXCEPTION_POINTERS. Note the value of this argument.
  2. Use the dt (Display Type) debugger command and specify the value that you found in the previous step as argument.

    dt nt!_EXCEPTION_POINTERS argument 

    This command displays the structure. Note the address of the context record.

  3. Use the .cxr (Display Context Record) command and specify the context record that you found in the previous step as record.

    .cxr record 

    This command sets the register context to the proper value.

  4. Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .

Debugging bug check 0xA0 when Parameter 1 equals 0x8 and Parameter 2 equals 0x101
  1. Use the dt (Display Type) command and specify the value of Parameter 3 as argument.

    dt nt!_EXCEPTION_POINTERS argument 

    This command displays the structure. Note the address of the context record.

  2. Use the .cxr (Display Context Record) command and specify the context record that you found the previous step as record.

    .cxr record 

    This command sets the register context to the proper value.

  3. Use a variety of commands to analyze the source of the error. Start with kb (Display Stack Backtrace) .


Send feedback on this topic
Built on October 01, 2009
Page view tracker