APC_INDEX_MISMATCH

Code: 0x1 (1)

As HRESULT:As NTSTATUS:

Parameters

ParameterDescription
1The address of the system function (system call) or worker routine.
2The value of the current thread's ApcStateIndex field.
3The value of current thread's CombinedApcDisable field. This field consists of two separate 16-bit fields: (Thread >SpecialApcDisable < < 16) | Thread >KernelApcDisable.
4Call type:
0 - System call
1 - Worker routine

Description

The APC_INDEX_MISMATCH bug check has a value of 0x00000001. The bug check indicates a mismatch in the asynchronous procedure calls (APC) state index.

Important

This article is for programmers. If you're a Microsoft customer and your computer displays a blue screen error code, see Troubleshoot blue screen errors.

Cause

The most common cause of this bug check is when a file system or driver has a mismatched sequence of calls to disable and re-enable APCs. The key data item is the Thread >CombinedApcDisable field. The CombinedApcDisable field consists of two separate 16-bit fields: SpecialApcDisable and KernelApcDisable. A negative value of either field indicates that a driver has disabled special or normal APCs (respectively) without re-enabling them. A positive value indicates that a driver has enabled special or normal APCs too many times.

Resolution

You can resolve this problem by using WinDbg or by using basic troubleshooting techniques.

Debug by using WinDbg

The !analyze debugger extension displays information about the bug check and can help you determine the root cause.

You can use the !apc extension to display the contents of one or more APCs.

You also can set a breakpoint in the code that precedes this stop code and attempt to single-step forward into the faulting code.

For more information about using WinDbg, see Crash dump analysis using the Windows debuggers (WinDbg).

Debug without using WinDbg

If you aren't equipped to use the Windows debugger to work on this problem:

For more general troubleshooting information, see Analyze Bug Check Blue Screen Data.

Remarks

This bug check is the result of an internal error in the kernel. This error occurs on exit from a system call. A possible cause for this bug check is a file system or driver that has a mismatched sequence of system calls to enter or leave guarded or critical regions. For example, each call to KeEnterCriticalRegion must have a matching call to KeLeaveCriticalRegion.

If you're developing a driver, you can use Static Driver Verifier, a static analysis tool available in Windows Driver Kit, to detect problems in your code before you ship your driver. Run Static Driver Verifier with the CriticalRegions rule to verify that your source code uses these system calls in correct sequence.

See also

Bug check code reference

Article text from the Windows driver documentation (opens in a new tab), by Microsoft, under the CC BY 4.0 (opens in a new tab) licence.

Associated Modules

ModuleCodeFound inDescription
ApplicationLogMessages.dll0x111%1
AppxProvider.dll0x18.11011AppxProvider
AssocProvider.dll0x18.11011AssocProvider
CompatProvider.dll0x178.1CompatProvider
DFDTS.dll0x11011Windows Disk Diagnostic detected a S.M.A.R.T. fault on disk %1 (volumes %2). This disk might fail; back up your computer now. All data on the hard disk, including files, documents, pictures, programs, and settings might be lost if your hard disk fails. To determine if the hard disk needs to be repaired or replaced, contact the manufacturer of your computer. If you can't back up (for example, you have no CDs or other backup media), you should shut down your computer and restart when you have backup media available. In the meantime, do not save any critical files to this disk.
DFDWiz.exe0x11011Windows Disk Diagnostic detected a S.M.A.R.T. fault on disk %1 (volumes %2). This disk might fail; back up your computer now. All data on the hard disk, including files, documents, pictures, programs, and settings might be lost if your hard disk fails. To determine if the hard disk needs to be repaired or replaced, contact the manufacturer of your computer. If you can't back up (for example, you have no CDs or other backup media), you should shut down your computer and restart when you have backup media available. In the meantime, do not save any critical files to this disk.
DevDispItemProvider.dll0x18.11011%1 - Top
ESENT.dll0x18.11011General
EdgeProvider.dll0x111AppxProvider
EhStorTcgDrv.sys0x11011An operation has failed (%3, %4, %5, %6). %1 HResult: %2
EventCreate.exe0x178.11011%1
FXSEVENT.dll0x11011Initialization/Termination
FfuProvider.dll0x11011FfuProvider
GenericProvider.dll0x11011GenericProvider
ImagingProvider.dll0x18.11011ImagingProvider
KernelBase.dll0x178.1Incorrect function.
LocationNotifications.exe0x178.1A program accessed information from a location sensor or default location FriendlyName=%1; ImagePath=%2; PID=%3; Username=%4; SID=%5
McpManagementService.dll0x111%1
Microsoft.Bluetooth.AvrcpTransport.sys0x11011%1 Avrcp Transport
MsSpellCheckingHost.exe0x18.1Failed instantiating third-party spellchecker: Language tag %1, HRESULT %2.
NetTCPIP.dll0x11011Can not find the required property %1
ProvProvider.dll0x11011Element: %1
Query.dll0x17CI Service
RpcNs4.dll0x178.11011RPC Error
SCardSvr.dll0x178.11011%1
SMCCx.dll0x11011An operation has failed (%3, %4, %5, %6). %1 HResult: %2
ServiceModelEvents.dll0x178.11011ServiceAuthorization
SetupPlatformProvider.dll0x11011SetupPlatformProvider
UnattendProvider.dll0x178.11011UnattendProvider
Usb4DeviceRouter.SYS0x111A monitor attached to your hub or dock was successfully enumerated by the USB4 Connection Manager.
UsbccidDriver.dll0x11011An operation has failed (%3, %4, %5, %6). %1 HResult: %2
VSSVC.exe0x11011Volume Shadow Copy Service initialization error: the control dispatcher cannot be started [%1]. %2
VerifierExt.sys0x11011XDV driver loaded!
VhdProvider.dll0x18.11011VhdProvider
WUDFUsbccidDriver.dll0x11011An operation has failed (%3, %4, %5, %6). %1 HResult: %2
WimProvider.dll0x178.11011WimProvider
WinSAT.exe0x11011Windows System Assessment Tool COMMAND LINE USAGE : WINSAT [switches] It's necessary to supply an assessment name. In contrast, switches are optional. Valid assessment names already seen in Vista include: formal run the full set of assessments dwm Run the Desktop Windows Manager assessment - Re-assess the systems graphics capabilities and restart the Desktop Window Manager. cpu Run the CPU assessment. mem Run the system memory assessment. d3d Run the d3d assessment (Note that the d3d assessment no longer runs the workload. For backward compatibility, pre-determined scores and metrics are reported.) disk Run the storage assessment media Run the media assessment mfmedia Run the Media Foundation based assessment features Run just the features assessment - Enumerates the system's features. - It's best used with the -xml switch to save the data. - The 'eef'switch can be used to enumerate extra features such as optical disks, memory modules, and other items. PRE-POPULATION: The new command-line options for pre-populating WinSAT assessment results are : Winsat prepop [-datastore ] [ -graphics | -cpu | -mem | -disk | -dwm ] This generates WinSAT xml files whose filenames contain "prepop". For example : 0008-09-26 14.48.28.542 Cpu.Assessment (Prepop).WinSAT.xml The filename pattern is : %IdentifierDerivedFromDate% %Component.Assessment(Prepop).WinSAT.xml The datastore directory option specifies an alternative target location for generated xml files. If no location is specified, everything is pre-populated to %WINDIR%\performance\winsat\datastore. To generate a full set of result xml files, use "winsat prepop". It is also possible to pre-populate results for a subsystem, such as CPU, subject to the following dependencies: The CPU assessment has a secondary dependency on the Memory assessment The Memory assessment has a secondary dependency on the CPU assessment The Graphics assessment has a secondary dependency on both CPU and Memory assessments The DWM assessment can run standalone The Disk assessment can run standalone If the assessment for a secondary dependency is not present, WinSAT will run the secondary assessment along with the requested primary assessment. For example, "winsat prepop -cpu" will run both the CPU and the Memory test, if the xml file for the Memory test is not present. OTHER NEW Win7 ASSESSMENT OPTIONS : dwmformal Run Desktop Windows Manager assessment to generate the WinSAT Graphics score cpuformal Run CPU assessment to generate the WinSAT Processor score memformal Run Memory assessment to generate the WinSAT Memory (RAM) score graphicsformal Run Graphics assessment to generate the WinSAT Gaming Graphics score diskformal Run Disk assessment to generate the WinSAT Primary Hard Disk score All formal assessments will save the data (xml files) in %WINDIR%\performance\winsat\datastore. If a system has been prepopulated (using files generated by the "winsat prepop" option), it is not necessary to run formal assessments. SUB-ASSESSMENTS: While investigating results, it may be convenient to look at individual assessments. Options for running Gaming Graphics sub-assessments include: Winsat graphicsformal3d Winsat graphicsformalmedia DX9 Variations: Winsat d3d -dx9 winsat d3d -batch winsat d3d -alpha winsat d3d -tex winsat d3d -alu DWM/DX10 variations: Winsat d3d -dx10 winsat d3d -dx10 -alpha winsat d3d -dx10 -tex winsat d3d -dx10 -alu winsat d3d -dx10 -batch winsat d3d -dx10 -geomf4 winsat d3d -dx10 -geomf27 winsat d3d -dx10 -geomv8 winsat d3d -dx10 -gemov32 winsat d3d -dx10 -cbuffer OPTIONS FOR FORMAL ASSESSMENTS FOR SUBSEQUENT RUNS ON THE SAME MACHINE: The default behavior for "WinSAT formal" when a complete set of winsat formal files is present and a second "winsat formal" run is requested is to 1) Run incrementally if component change implies that an assessment needs to be re-run, e.g. if a video card were updated 2) If no component updates were detected, re-run all assessments. The restart option enables behavior other than the default. The syntax is : Winsat formal -restart [clean|never] Winsat formal -restart Reruns all assessments. Winsat formal -restart never Attempts to run incrementally. Winsat formal -restart clean Reruns all assessments and provides the same functionality as "forgethistory". Winsat forgethistory Choosing to forgethistory will rate a machine as if for the first time. OTHER COMMAND LINE OPTIONS : -v Enables verbose output -xml Saves the XML output to 'filename' -log Generates a log file associated with the specified command, such as disk The -log switch can be used with any WinSAT command. viewlog -i Dumps the results of a log file . viewevents Used to view relevant winsat events in the event log. (This launches the event log) query Can be used to query the current datastore.
WinSCard.dll0x17%1
WudfSMCClassExt.dll0x11011An operation has failed (%3, %4, %5, %6). %1 HResult: %2
apphelp.dll0x178.11011The application (%3, from vendor %5) has the following problem: %7
bootstr.dll0x11011Windows Setup
bthenum.sys0x11011Bluetooth Peripheral Device
cdosys.dll0x178.11011Header
cipher.exe0x178.11011[OK]
clfs.sys0x111CLFS failed to open a log file due to authentication error. Reason: %1
cmimcext.sys0x11011An error with reference Id=%1 was encountered while processing the hive '%3'. The status was: %4. The additional information was %5.
compact.exe0x178.11011[OK]
connect.dll0x178.11011Connecting to %1!s!...
cscui.dll0x11011Server '%1' is now offline.
deviceaccess.dll0x18.1%2 requested task %1 to service device %4.
deviceregistration.dll0x11011Workplace Join operation failed. Activity Id: %2 Exit code: %1 Error Message: %4 Registration Service URI: %5
dimsjob.dll0x178.11011Certificate Services Client has been started successfully.
dskquota.dll0x178.11011Insufficient memory to apply quota policy.
dskquoui.dll0x178.11011Insufficient memory to apply quota policy.
dsreg.dll0x11011%1
dssec.dll0x178.11011Domain administer server
ehepgres.dll0x17%1
ehrecvr.exe0x17Service registration successful.
ehres.dll0x17EHTRAY_S_IGNORE_EVENT
ehsched.exe0x17Bad service request.
findstr.exe0x178.11011%1: Bad command line
finger.exe0x178.1%1:TLOOK returned %2!d!
fltmgr.sys0x11011File System Filter '%5' (Version %2.%3, %6) unloaded successfully.
fontview.exe0x178.11011The requested file %1 is not a valid font file.
fphc.dll0x178.11011Settings that might be blocking the connection: Provider name: %1 Provider description: %2 Filter name: %3 Provider context name: %4
ftp.exe0x178.1%1:TLOOK returned %2!d!
hostname.exe0x178.1%1:TLOOK returned %2!d!
hvloader.dll0x111Hypervisor successfully started.
hvservice.sys0x110Hypervisor successfully started.
icardres.dll0x17General
ieframe.dll0x18.11011An add-on has been enabled. Application: %1. Add-on: %2. Publisher: %3. Version:%4
kernel32.dll0x178.11011Incorrect function.
locationframework.dll0x11011Geolocation positioning is enabled.
mciavi32.dll0x178.11011The file %2 could not be processed by the application %1 because it requires Indeo® Decoders of type %3
microsoft-windows-hal-events.dll0x11011Initialization of the High Precision Event Timer failed due to a BIOS configuration problem. The operating system will use another available platform timer in lieu of the High Precision Event Timer. Contact your system vendor for technical assistance. Initialization status: %1.
microsoft-windows-kernel-processor-power-events.dll0x11011Idle power management features on processor %1 are disabled due to a firmware problem. Check with the computer manufacturer for updated firmware.
microsoft-windows-system-events.dll0x11011Possible detection of CVE: %1 Additional Information: %2 This Event is generated when an attempt to exploit a known vulnerability (%1) is detected. This Event is raised by a User mode process.
mispace.dll0x18.11011Data is striped across physical disks, maximizing capacity and increasing throughput, but decreasing reliability. This storage layout requires at least one disk and does not protect you from a disk failure.
mountvol.exe0x178.11011Creates, deletes, or lists a volume mount point. MOUNTVOL [drive:]path VolumeName MOUNTVOL [drive:]path /D MOUNTVOL [drive:]path /L MOUNTVOL [drive:]path /P MOUNTVOL /R MOUNTVOL /N MOUNTVOL /E
msaudite.dll0x178.11011System Event
napipsec.dll0x178.1NAP IPSec Relying Party initialized successfully
netcfg.exe0x11011Trying to install %1 ...
netdacim.dll0x18.11011Performing operation %1 on Target %2
netnccim.dll0x18.11011Performing operation %1 on Target %2
netttcim.dll0x18.11011Performing operation %1 on Target %2
nslookup.exe0x178.11011Unrecognized command: %1
ntdll.dll0x178.11011STATUS_WAIT_1
ntmarta.dll0x178.11011AclPropagation
pci.sys0x11011VGA Device
pdh.dll0x178.11011The returned data value is valid and different from the last sample.
pots.dll0x18.11011The system has returned from a low power state. Sleep Time: %1 Wake Time: %2 Wake Source: %13%15
pots.dll0x17The system has resumed from sleep. Sleep Time: %1 Wake Time: %2 Wake Source: %13%15
powershell.exe0x178.11011Missing argument for parameter %1!ls!.
pshed.dll0x178.11011A non-fatal hardware error occurred.
pwrshmsg.dll0x178.11011Engine Health
quartz.dll0x178.11011The file %2 could not be processed by the application %1 because it requires Indeo® Decoders of type %3
reagentc.exe0x178.11011%1: Bad command line
sc.exe0x11011DESCRIPTION: SC is a command line program used for communicating with the Service Control Manager and services. USAGE: sc [command] [service name] ... The option has the form "\\ServerName" Further help on commands can be obtained by typing: "sc [command]" Commands: query-----------Queries the status for a service, or enumerates the status for types of services. queryex---------Queries the extended status for a service, or enumerates the status for types of services. start-----------Starts a service. pause-----------Sends a PAUSE control request to a service. interrogate-----Sends an INTERROGATE control request to a service. continue--------Sends a CONTINUE control request to a service. stop------------Sends a STOP request to a service. config----------Changes the configuration of a service (persistent). description-----Changes the description of a service. failure---------Changes the actions taken by a service upon failure. failureflag-----Changes the failure actions flag of a service. sidtype---------Changes the service SID type of a service. privs-----------Changes the required privileges of a service. managedaccount--Changes the service to mark the service account password as managed by LSA. qc--------------Queries the configuration information for a service. qdescription----Queries the description for a service. qfailure--------Queries the actions taken by a service upon failure. qfailureflag----Queries the failure actions flag of a service. qsidtype--------Queries the service SID type of a service. qprivs----------Queries the required privileges of a service. qtriggerinfo----Queries the trigger parameters of a service. qpreferrednode--Queries the preferred NUMA node of a service. qmanagedaccount-Queries whether a services uses an account with a password managed by LSA. qprotection-----Queries the process protection level of a service. quserservice----Queries for a local instance of a user service template. delete----------Deletes a service (from the registry). create----------Creates a service. (adds it to the registry). control---------Sends a control to a service. sdshow----------Displays a service's security descriptor. sdset-----------Sets a service's security descriptor. showsid---------Displays the service SID string corresponding to an arbitrary name. triggerinfo-----Configures the trigger parameters of a service. preferrednode---Sets the preferred NUMA node of a service. GetDisplayName--Gets the DisplayName for a service. GetKeyName------Gets the ServiceKeyName for a service. EnumDepend------Enumerates Service Dependencies. The following commands don't require a service name: sc
sc.exe0x17DESCRIPTION: SC is a command line program used for communicating with the Service Control Manager and services. USAGE: sc [command] [service name] ... The option has the form "\\ServerName" Further help on commands can be obtained by typing: "sc [command]" Commands: query-----------Queries the status for a service, or enumerates the status for types of services. queryex---------Queries the extended status for a service, or enumerates the status for types of services. start-----------Starts a service. pause-----------Sends a PAUSE control request to a service. interrogate-----Sends an INTERROGATE control request to a service. continue--------Sends a CONTINUE control request to a service. stop------------Sends a STOP request to a service. config----------Changes the configuration of a service (persistent). description-----Changes the description of a service. failure---------Changes the actions taken by a service upon failure. failureflag-----Changes the failure actions flag of a service. sidtype---------Changes the service SID type of a service. privs-----------Changes the required privileges of a service. qc--------------Queries the configuration information for a service. qdescription----Queries the description for a service. qfailure--------Queries the actions taken by a service upon failure. qfailureflag----Queries the failure actions flag of a service. qsidtype--------Queries the service SID type of a service. qprivs----------Queries the required privileges of a service. qtriggerinfo----Queries the trigger parameters of a service. qpreferrednode--Queries the preferred NUMA node of a service. delete----------Deletes a service (from the registry). create----------Creates a service. (adds it to the registry). control---------Sends a control to a service. sdshow----------Displays a service's security descriptor. sdset-----------Sets a service's security descriptor. showsid---------Displays the service SID string corresponding to an arbitrary name. triggerinfo-----Configures the trigger parameters of a service. preferrednode---Sets the preferred NUMA node of a service. GetDisplayName--Gets the DisplayName for a service. GetKeyName------Gets the ServiceKeyName for a service. EnumDepend------Enumerates Service Dependencies. The following commands don't require a service name: sc
sc.exe0x18.1DESCRIPTION: SC is a command line program used for communicating with the Service Control Manager and services. USAGE: sc [command] [service name] ... The option has the form "\\ServerName" Further help on commands can be obtained by typing: "sc [command]" Commands: query-----------Queries the status for a service, or enumerates the status for types of services. queryex---------Queries the extended status for a service, or enumerates the status for types of services. start-----------Starts a service. pause-----------Sends a PAUSE control request to a service. interrogate-----Sends an INTERROGATE control request to a service. continue--------Sends a CONTINUE control request to a service. stop------------Sends a STOP request to a service. config----------Changes the configuration of a service (persistent). description-----Changes the description of a service. failure---------Changes the actions taken by a service upon failure. failureflag-----Changes the failure actions flag of a service. sidtype---------Changes the service SID type of a service. privs-----------Changes the required privileges of a service. managedaccount--Changes the service to mark the service account password as managed by LSA. qc--------------Queries the configuration information for a service. qdescription----Queries the description for a service. qfailure--------Queries the actions taken by a service upon failure. qfailureflag----Queries the failure actions flag of a service. qsidtype--------Queries the service SID type of a service. qprivs----------Queries the required privileges of a service. qtriggerinfo----Queries the trigger parameters of a service. qpreferrednode--Queries the preferred NUMA node of a service. qrunlevel-------Queries the run level of a service. qmanagedaccount-Queries whether a services uses an account with a password managed by LSA. qprotection-----Queries the process protection level of a service. delete----------Deletes a service (from the registry). create----------Creates a service. (adds it to the registry). control---------Sends a control to a service. sdshow----------Displays a service's security descriptor. sdset-----------Sets a service's security descriptor. showsid---------Displays the service SID string corresponding to an arbitrary name. triggerinfo-----Configures the trigger parameters of a service. preferrednode---Sets the preferred NUMA node of a service. runlevel--------Sets the run level of a service. GetDisplayName--Gets the DisplayName for a service. GetKeyName------Gets the ServiceKeyName for a service. EnumDepend------Enumerates Service Dependencies. The following commands don't require a service name: sc
scripto.dll0x11011Scritpo
sstpsvc.dll0x11011CoId=%1:The initial Secure Socket Tunneling Protocol request could not be successfully sent to the server. This can be due to network connectivity issues or certificate (trust) issues. The detailed error message is provided below. Correct the problem and try again. %2
storagewmi.dll0x18.11011There was an error while using the storage provider "%1" with ID "%2". ErrorCode=%3!08lX!
tquery.dll0x178.11011Search service
w32time.dll0x11011The time provider '%1' logged the following error: %2
webservices.dll0x178.11011The function or feature is not yet implemented.
wecutil.exe0x178.11011Out of memory.
wevtapi.dll0x178.11011Devices
wevtutil.exe0x178.11011Failed to open config file: %1!s!.
wfascim.dll0x11011The IPsec DoSP settings are corrupt for the NetIPsecDoSPSetting WMI Object with name: %1 Please use %2 to restore them.
whealogr.dll0x171011A fatal hardware error has occurred. A record describing the condition is contained in the data section of this event.
winbio.dll0x18.11011Position your finger lower on the fingerprint reader.
winhttp.dll0x178.11011%1
winsrv.dll0x178.11011Click on OK to terminate the program
winsrvext.dll0x111Click on OK to terminate the program
wscsvc.dll0x178.11011The Windows Security Center Service has started.
xwizard.exe0x178.11011Extensible wizard host process
xwizards.dll0x178.11011XML File Processing
118 entries