Application Verifier - Stop Codes - Printing

The following stop codes are contained in this set of tests.

Leaked printer handle detected

Probable cause

An open printer handle was detected when the application terminated. Most likely, the creating thread did not call ClosePrinter() to close the printer handle. To troubleshoot this stop, determine the thread that opened the printer handle by using the second parameter of this verifier stop to provide the stack trace. Dump the stack trace using the dps command in the debugger. Find the first non-winspool and non-vfPrint module name that called vfPrint!VfHookOpenPrinter* or vfPrint!VfHookAddPrinter* - this typically is the 4th or the 6th stack frame in the list.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being leaked.
  • Parameter 2 - Initialization stack trace. Use dps to dump the stack if this parameter is not NULL.
  • Parameter 3 - Thread id of the thread that opened the handle.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: LEAKED_PRINTER_HANDLE
  • Stop code: 0000A000
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Leaked printer change notification handle detected

Probable cause

A printer change notification handle that was not closed was detected when the application exited. Most likely the thread that opened the handle did not call FindClosePrinterChangeNotification() to close the handle before the thread exited. To troubleshoot this stop, determine the thread that opened the printer change notification handle: The second parameter of this stop provides the stack address. Use the dps command to dump the stack trace. Find the first non-winspool and non-vfPrint module name that called vfPrint!VfHookFindFirstPrinterChangeNotification. This is typically found in the 4th stack frame.

Information displayed by Application Verifier
  • Parameter 1 - Printer change notification handle being leaked.
  • Parameter 2 - Initialization stack trace. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Thread id of the last thread using it.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: LEAKED_PRINTER_CHANGE_NOTIFICATION_HANDLE
  • Stop code: 0000A001
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Leaked PRINTER_NOTIFY_INFO detected

Probable cause

An allocated PRINTER_NOTIFY_INFO object that had not been freed was detected when the program exited. Most likely, it needs to be freed by calling FreePrinterNotifyInfo() before exiting. To troubleshoot this stop: Determine the routine that called winspool to allocate the PRINTER_NOTIFY_INFO object on its behalf by using the second parameter of this verifier stop. Dump the initialization stack trace using the dps command in the debugger. Find the first non-winspool and non-vfPrint module name that called vfPrint!VfHookFindNextPrinterChangeNotification. This routine is typically found in the 3rd stack frame.

Information displayed by Application Verifier
  • Parameter 1 - The pointer to the leaked PRINTER_NOTIFY_INFO object.
  • Parameter 2 - Initialization stack trace. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: LEAKED_PPRINTER_NOTIFY_INFO
  • Stop code: 0000A002
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Race condition detected while using a printer handle

Probable cause

A printer handle is being used concurrently in multiple threads. Printer handles are not thread safe which means that simultaneous use of a printer handle in multiple threads is not permitted without application-level synchronization to safely coordinate access to the handle. The application should either open a separate printer handle in each thread or provide custom synchronization access to the printer handle by using the Win32 synchronization API. The Win32 synchronization API is described further at https://learn.microsoft.com/windows/win32/sync/synchronization-functions.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being accessed.
  • Parameter 2 - Current thread id.
  • Parameter 3 - Thread id of the concurrent thread.
  • Parameter 4 - Concurrency count.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: MULTITHREADED_ACCESS_TO_PRINTER_HANDLE
  • Stop code: 0000A003
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Potential multi-threaded access to a printer handle detected

Probable cause

A printer handle was used in a different thread than the thread that created it. Printer handles are not thread safe which means that simultaneous use of a printer handle in multiple threads is not permitted without application-level synchronization to safely coordinate access to the handle. The application should either open a separate printer handle in each thread or provide custom synchronization access to the printer handle by using the Win32 synchronization API. The Win32 synchronization API is described further at https://learn.microsoft.com/windows/win32/sync/synchronization-functions.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being accessed.
  • Parameter 2 - Thread id of the initializing thread.
  • Parameter 3 - Stack trace of the initialization.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINTER_HANDLE_ACCESSED_NOT_ON_THE_THREAD_THAT_OPENED_IT
  • Stop code: 0000A004
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: no
  • Create backtrace: no

Attempt to use a closed printer handle

Probable cause

A printer handle was used after it had been closed. To identify the routine that tried to use the closed printer handle, dump the current stack trace by using the 'k' command in the debugger. To dump the stack trace of the routine that closed the handle, use the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being accessed.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINTER_HANDLE_ALREADY_CLOSED
  • Stop code: 0000A005
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an unknown printer handle

Probable cause

An attempt was made to use a printer handle that was not opened by calling OpenPrinterA, OpenPrinterW, OpenPrinter2W (on Windows Vista), AddPrinterA, or AddPrinterW. To see the stack trace of the routine that attempted this action, use the 'k' command in the debugger.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being accessed.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: INVALID_PRINTER_HANDLE
  • Stop code: 0000A006
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use a closed printer change notification handle

Probable cause

A printer change notification handle was used after it had been closed. To see the routine that tried to use the closed printer change notification handle, dump the current stack trace by using the 'k' command in the debugger. To dump the stack trace of the routine that closed the handle, use the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - Printer change notification handle being accessed.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINTER_CHANGE_NOTIFICATION_HANDLE_ALREADY_CLOSED
  • Stop code: 0000A007
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an invalid printer change notification handle

Probable cause

A handle that was not opened with the FindFirstPrinterChangeNotification Win32 API function was passed as a printer change notification handle. To see the stack trace of the routine that attempted this action, use the 'k' command in the debugger.

Information displayed by Application Verifier
  • Parameter 1 - Printer change notification handle being accessed.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: UNKNOWN_PRINTER_CHANGE_NOTIFICATION_HANDLE
  • Stop code: 0000A008
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use a freed PRINTER_NOTIFY_INFO object

Probable cause

A PRINTER_NOTIFY_INFO object was used after it has been freed. To see the routine that tried to use the freed PRINTER_NOTIFY_INFO object, dump the current stack trace by using the 'k' command in the debugger. To dump the stack trace of the routine that closed the handle, use the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - Address of the PRINTER_NOTIFY_INFO being accessed.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINTER_NOTIFY_INFO_ALREADY_FREED
  • Stop code: 0000A009
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an invalid PRINTER_NOTIFY_INFO object

Probable cause

The PRINTER_NOTIFY_INFO object was not opened by the FindNextPrinterChangeNotification Win32 API function. To see the stack trace of the routine that attempted this action, use the 'k' command in the debugger.

Information displayed by Application Verifier
  • Parameter 1 - Address of the PRINTER_NOTIFY_INFO being accessed.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: INVALID_PRINTER_NOTIFY_INFO
  • Stop code: 0000A00A
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Too many open printer handles

Probable cause

Too many printer handles were opened. There might be a resource leak.

Information displayed by Application Verifier
  • Parameter 1 - Number of currently open printer handles.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: TOO_MANY_OPENED_PRINTER_HANDLES
  • Stop code: 0000A00B
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

OpenPrinter2W seems to be exported from winspool.drv of an earlier version of Windows

Probable cause

Unknown. Report this error to Microsoft.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: WINSPOOL_OPENPRINTER2W_EXPORTED_ON_PRE_VISTA_OS
  • Stop code: 0000A00C
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Too many open PrintTicket provider handles (HPTPROVIDER)

Probable cause

Too many PrintTicket provider handles were opened by calling PTOpenProvider(Ex). This might be the result of not calling PTCloseProvider when the handle is no longer needed, creating a resource leak.

Information displayed by Application Verifier
  • Parameter 1 - Number of currently opened PrintTicket provider handles.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: TOO_MANY_OPENED_PRINT_TICKET_PROVIDER_HANDLES
  • Stop code: 0000A00D
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Attempt to use a closed PrintTicket provider handle (HPTPROVIDER)

Probable cause

A PrintTicket provider handle was used after it had been freed. To see the routine that tried to use the closed PrintTicket provider handler, dump the current stack trace by using the 'k' command in the debugger. To dump the stack trace of the routine that closed the handle, use the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - HPTPROVIDER handle being accessed.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINT_TICKET_PROVIDER_HANDLE_ALREADY_CLOSED
  • Stop code: 0000A00E
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an unknown PrintTicket provider handle (HPTPROVIDER)

Probable cause

A PrintTicket provider handle was used that was not opened by calling PTOpenProvider or PTOpenProviderEx.

Information displayed by Application Verifier
  • Parameter 1 - HPTPROVIDER handle being accessed.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: UNKNOWN_PRINT_TICKET_PROVIDER_HANDLE
  • Stop code: 0000A00F
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Race condition detected while using a PrintTicket provider handle

Probable cause

A PrintTicket provider handle was being used concurrently in multiple threads. This requires application-level of synchronization of the access to the handle. PrintTicket provider handles are not thread safe which means that simultaneous use of a PrintTicket provider handle in multiple threads is not permitted. Instead, the application should either open a separate PrintTicket provider handle in each thread or provide custom synchronization access to the PrintTicket provider handle by using the Win32 synchronization API. The Win32 synchronization API is described further at https://learn.microsoft.com/windows/win32/sync/synchronization-functions.

Information displayed by Application Verifier
  • Parameter 1 - PrintTicket provider handle being accessed.
  • Parameter 2 - Current thread id.
  • Parameter 3 - Thread id of the concurrent thread.
  • Parameter 4 - Concurrency count.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: MULTITHREADED_ACCESS_TO_PRINT_TICKET_PROVIDER_HANDLE
  • Stop code: 0000A010
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Potential multi-threaded access to a PrintTicket provider handle detected

Probable cause

This is a warning that a PrintTicket provider handle was used in a thread different from the thread that created it. This may require application-level synchronization to safely access the handle. PrintTicket provider handles are not thread safe which means that simultaneous use of a PrintTicket provider handle in multiple threads is not permitted. Instead, the application should either open a separate PrintTicket provider handle in each thread or provide custom synchronization access to the PrintTicket provider handle by using the Win32 synchronization API. The Win32 synchronization API is described further at https://learn.microsoft.com/windows/win32/sync/synchronization-functions.

Information displayed by Application Verifier
  • Parameter 1 - PrintTicket provider handle being accessed.
  • Parameter 2 - Thread id of the initializing thread.
  • Parameter 3 - Stack trace of the initialization.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINT_TICKET_PROVIDER_HANDLE_ACCESSED_NOT_ON_THE_THREAD_THAT_OPENED_IT
  • Stop code: 0000A011
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Leaked PrintTicket provider handle detected

Probable cause

An open PrintTicket provider handle was detected when the thread exited. The creating routine might not have called PTCloseProvider() to close it prior to exiting. To troubleshoot this stop, determine the thread that opened the PrintTicket provider handle by using the second parameter of this verifier stop to provide the stack trace. Dump the stack trace using the dps command in the debugger. Find the first non-prntvpt and non-vfPrint module name that called vfPrint!VfPTOpenProvider or vfPrint!VfPTOpenProviderEx - this typically is the 4th or the 6th stack frame in the list.

Information displayed by Application Verifier
  • Parameter 1 - PrintTicket provider handle being leaked.
  • Parameter 2 - Initialization stack trace. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Thread id of the thread that opened the handle.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: LEAKED_PRINT_TICKET_PROVIDER_HANDLE
  • Stop code: 0000A012
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Too many open printer change notification handles

Probable cause

Too many printer change notification handles were opened. There might be a resource leak. One common form of resource leaks is where a routine will open a printer change notification handle and not close it before exiting.

Information displayed by Application Verifier
  • Parameter 1 - Number of currently opened printer change notification handles.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: TOO_MANY_OPENED_PRINTER_CHANGE_NOTIFICATION_HANDLES
  • Stop code: 0000A013
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Too many open PRINTER_NOTIFY_INFO objects

Probable cause

Too many PRINTER_NOTIFY_INFO objects were opened. There might be a resource leak. One common form of resource leaks is where a routine will open a PRINTER_NOTIFY_INFO object and not close it before exiting.

Information displayed by Application Verifier
  • Parameter 1 - Number of currently opened PRINTER_NOTIFY_INFO objects.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: TOO_MANY_OPENED_PRINTER_NOTIFY_INFO_OBJECTS
  • Stop code: 0000A014
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an invalid PrintTicket

Probable cause

This verifier stop occurs when the application calls a PrintTicket method with an invalid PrintTicket.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused when the application called the %lS method with an invalid PrintTicket
  • Parameter 1 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 2 - PrintTicket XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: INVALID_APPLICATION_PRINTTICKET
  • Stop code: 0000A015
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an invalid PrintCapabilities document

Probable cause

This verifier stop occurs when the application calls a PrintTicket method with an invalid PrintCapabilities document.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused when the application called the %lS method with an invalid PrintCapabilities document
  • Parameter 1 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 2 - PrintCapabilities XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: INVALID_APPLICATION_PRINTCAPABILITIES
  • Stop code: 0000A016
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

An invalid NULL argument was passed to a PrintTicket method

Probable cause

This verifier stop occurs when the application calls a PrintTicket method with an invalid NULL argument.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused when the application called the %lS method with a NULL %lS argument
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PRINTTICKET_API_INVALID_NULL_ARGUMENT
  • Stop code: 0000A017
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

PTConform encountered an unexpected error

Probable cause

This verifier stop occurs when the PrintVerifier encounters an unexpected error while attempting to verify that the PrintTicket/PrintCapabilities conforms to the PrintSchema. Report this error to Microsoft because it could be a problem in the PrintVerifier.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: PTCONFORM_UNEXPECTED_ERROR
  • Stop code: 0000A018
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Illegal print API called from DllMain

Probable cause

A call was made to a print API that does not support being called from within DllMain. Many Win32 APIs, not just Win32 print APIs, cannot be called from DllMain. For more information, read the documentation on DllMain in the MSDN library.

Information displayed by Application Verifier
  • Format: -  Print API called from DllMain: %s
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: UNSUPPORTED_API_CALL_IN_DLLMAIN
  • Stop code: 0000A019
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Leaked spool file handle detected

Probable cause

An open spool file handle was detected when the application terminated. Most likely, CloseSpoolFileHandle() was not called. To troubleshoot this stop: Determine which thread opened the printer handle. Use dps to dump the stack if Parameter 2 is not NULL. Find the first non-winspool and non-vfPrint module name that called vfPrint!VfHookOpenPrinter* or vfPrint!VfHookAddPrinter*. This routine typically is the 4th or the 6th stack frame in the list.

Information displayed by Application Verifier
  • Parameter 1 - Handle being leaked.
  • Parameter 2 - Initialization stack trace. Use dps to dump the stack if this parameter is not NULL.
  • Parameter 3 - Thread id of the thread that opened the handle.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: LEAKED_SPOOL_FILE_HANDLE
  • Stop code: 0000A01A
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: no
  • Create backtrace: no

Attempt to use a closed spool file handle

Probable cause

Spool file handle was used after it had been closed. To troubleshoot this stop: Dump the current stack trace by using the 'k' command in the debugger to identify the routine that tried to use the closed handle. Dump the stack trace of the routine that closed the handle by using the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - Spool file handle being accessed.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: SPOOL_FILE_HANDLE_ALREADY_CLOSED
  • Stop code: 0000A01B
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an unknown spool file handle

Probable cause

An attempt was made to use a spool file handle that was not opened by calling GetSpoolFileHandle or CommitSpoolData. Use the 'k' command in the debugger to see the stack trace of the routine that attempted this action.

Information displayed by Application Verifier
  • Parameter 1 - Handle being accessed.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: INVALID_SPOOL_FILE_HANDLE
  • Stop code: 0000A01C
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Too many open spool file handles

Probable cause

Too many spool file handles were opened. There might be a resource leak.

Information displayed by Application Verifier
  • Parameter 1 - Number of currently opened handles.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: TOO_MANY_OPENED_SPOOL_FILE_HANDLES
  • Stop code: 0000A01D
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

A DEVMODE buffer parameter spans across non-readable memory page(s).

Probable cause

This stop can be caused by several conditions: the DEVMODE buffer was already freed, the DEVMODE buffer was constructed incorrectly by assigning the dmSize and dmDriverExtra members a value that is larger than it should be, or a NULL devmode buffer was used where a non-NULL buffer was expected.

Information displayed by Application Verifier
  • Format: -  This verifier stop was caused by a software component that called the print subsystem with a bad DEVMODE buffer. Review the current stack trace and check: the allocation, the construction, and the lifetime of the devmode to identify the bug location.
  • Parameter 1 - The bad DEVMODE buffer
  • Parameter 2 - The total buffer size as calculated from devmode dmSize and dmDriverExtra fields. Zero if the buffer is completely in non-readable memory.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: DEVMODE_BUFFER_SPANS_IN_NON_READABLE_MEMORY_PAGE
  • Stop code: 0000A01E
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Unloading module with active COM callback.

Probable cause

Positive refcount on COM interface was detected while target module is unloaded. Probably caused by incorrect implementation of DllCanUnloadNow export in module or incorrect reference counting.

Information displayed by Application Verifier
  • Format: -  This verifier stop was caused by %lS module unload while the system still holds a %lS pointer to it.
  • Parameter 1 - COM interface address.
  • Parameter 2 - Stack trace where callback was provided. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: MODULE_UNLOAD
  • Stop code: 0000A01F
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Async Notify handle returned by RegisterForPrintAsyncNotifications was not released properly

Probable cause

Handle allocated by RegisterForPrintAsyncNotifications API function had not been released until the program exited. Most likely, it needs to be released by calling UnRegisterForPrintAsyncNotifications() before exiting. To troubleshoot this stop: Determine the routine that called winspool to allocate the handle on its behalf by using the second parameter of this verifier stop. Dump the initialization stack trace using the dps command in the debugger. Find the first non-winspool and non-vfPrint module name that called vfPrint!VfHookRegisterForPrintAsyncNotifications. This routine is typically found in the 3rd stack frame.

Information displayed by Application Verifier
  • Parameter 1 - Handle value.
  • Parameter 2 - Initialization stack trace. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: LEAKED_ASYNC_NOTIFY_HANDLE
  • Stop code: 0000A020
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Attempt to use an invalid handle in UnRegisterForPrintAsyncNotifications.

Probable cause

The handle was not opened by the RegisterForPrintAsyncNotifications Win32 API function. To see the stack trace of the routine that attempted this action, use the 'k' command in the debugger.

Information displayed by Application Verifier
  • Parameter 1 - Handle value.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: INVALID_ASYNC_NOTIFY_HANDLE
  • Stop code: 0000A021
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use a closed handle in UnRegisterForPrintAsyncNotifications API function

Probable cause

An async notify handle was used after it has been closed. To see the routine that tried to use the closed handle, dump the current stack trace by using the 'k' command in the debugger. To dump the stack trace of the routine that closed the handle, use the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - Handle value.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: ASYNC_NOTIFY_HANDLE_ALREADY_CLOSED
  • Stop code: 0000A022
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Third-party function reports failure but increases reference count for input interface

Probable cause

A third-party method receives interface pointer as input. When such method returns fail code, interface ref count should remain the same. But in this case reference count was increased.

Information displayed by Application Verifier
  • Format: -  The %lS method returns %x error code but increases ref count of %lS parameter.
  • Parameter 1 - Called interface pointer. If NULL, called function is static.
  • Parameter 2 - Input interface pointer.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: REFCOUNT_PLUS_AFTER_FAIL
  • Stop code: 0000A023
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Windows API function reports failure but increases reference count for input interface

Probable cause

An API method receives interface pointer as input. When such method returns fail code, interface ref count should remain the same. But in this case reference count was increased. Please report this error to Microsoft because it could be a problem in API code.

Information displayed by Application Verifier
  • Format: -  The %lS method returns %x error code but increases ref count of %lS parameter.
  • Parameter 1 - Called interface pointer. If NULL, called function is static.
  • Parameter 2 - Input interface pointer.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: REFCOUNT_PLUS_AFTER_API_FAIL
  • Stop code: 0000A024
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

IPrintAsyncNotifyChannel contract violation by the operating system.

Probable cause

The platform implementation of IPrintAsyncNotifyChannel violated part of the special contract implied or defined by IPrintAsyncNotifyChannel. IPrintAsyncNotifyChannel has special exceptions to AddRef and Release. This requires that the platform calls OnEventNotify and ChannelClosed with the same pointer value as the channel was created with.

Information displayed by Application Verifier
  • Format: - %s was called with the wrong interface pointer.
  • Parameter 1 - Actual interface pointer.
  • Parameter 2 - Expected interface pointer.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: ASYNCCHANNEL_OS_CONTRACT_VIOLATION
  • Stop code: 0000A025
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

IPrintAsyncNotifyChannel contract violation by channel consumer.

Probable cause

On bidirectional channels, calling SendNotification, CloseChannel, or making the final Release on the interface pointer relinquishes 'ownership'. After creating the channel and sending the first notification, you cannot call Release() until your callback's OnEventNotify is invoked. If either you invoke CloseChannel() or get a ChannelClosed notification, then you must not perform the final Release() call.

Information displayed by Application Verifier
  • Format: - %s was called, but channel 'ownership' currently belongs to print spooler
  • Parameter 1 - IPrintAsyncNotifyChannel interface pointer.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: ASYNCCHANNEL_CLIENT_CONTRACT_VIOLATION
  • Stop code: 0000A026
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Race detected during closing of IPrintAsyncNotifyChannel

Probable cause

*** Please report this stop to Microsoft. *** This stop indicates that a notification arrives _during_ the call to CloseChannel. If this condition occurs, it may be impossible for the consumer to correctly release the channel. This stop should not be frequently encountered. It can be prevented by always ensuring a listener is available before a bidirectional channel is created, AND/OR ensuring that no listener can be started before attempting closing a channel that has already sent a notification but not received the callback.

Information displayed by Application Verifier
  • Format: - In function %s, a call is already in progress on a different thread. See help for more info.
  • Parameter 1 - IPrintAsyncNotifyChannel interface pointer.
  • Parameter 2 - Thread id of member function called.
  • Parameter 3 - Thread id of callback event function.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: ASYNCCHANNEL_CLOSECHANNEL_RACE_DETECTED
  • Stop code: 0000A027
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Calling a print API that makes network calls on a GUI thread. This can lead to unbound in time UI hangs.

Probable cause

A print API was called that makes network calls on a GUI thread. This can lead to unbound in time UI hangs. Typically such APIs need to be called on a worker thread, with no message pumps.

Information displayed by Application Verifier
  • Format: - %s was called on a thread that is a GUI thread. This can lead to unbound in time UI hangs.
  • Parameter 1 - HWND of the top-level visible window.
  • Parameter 2 - Current thread ID.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: CALLING_NETBOUND_PRINT_API_ON_GUI_THREAD
  • Stop code: 0000A028
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Calling an API that will pop up user interface is Session0.

Probable cause

A call was made to an API that will pop up user interface is Session0.

Information displayed by Application Verifier
  • Format: -  The illegal-to-call in Session0 API: %s
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintAPI
  • Stop ID: UNSUPPORTED_API_CALLED_IN_SESSION_ZERO
  • Stop code: 0000A029
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

First chance access violation detected

Probable cause

This stop is generated when the printer driver tries to access a virtual memory address that is not accessible because it is non-executable, it has been freed or decommitted, or it is reserved but not committed. To debug this stop: $ u parameter2 - to unassemble the suspect code $ .exr parameter3 - to display the exception information; $ .cxr parameter4 - to display the exception context information $ kb - to display the stack trace when the exception was raised.

Information displayed by Application Verifier
  • Parameter 1 - Address being accessed.
  • Parameter 2 - Code performing invalid access.
  • Parameter 3 - Exception record. Use .exr to display it.
  • Parameter 4 - Context record. Use .cxr to display it.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FIRST_CHANCE_ACCESS_VIOLATION
  • Stop code: 0000D000
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The thread tried to divide an integer value by an integer divisor of zero

Probable cause

This stop is generated when the printer driver tries to divide an integer value by an integer divisor of zero. To debug this stop: $ u parameter1 - to unassemble the suspect code $ .exr parameter2 - to display the exception information; $ .cxr parameter3 - to display the exception context information $ kb - to display the stack trace when the exception was raised.

Information displayed by Application Verifier
  • Parameter 1 - Code performing divide by zero operation.
  • Parameter 2 - Exception record. Use .exr to display it.
  • Parameter 3 - Context record. Use .cxr to display it.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INT_DIVIDE_BY_ZERO
  • Stop code: 0000D001
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The thread tried to read or write misaligned data on hardware that does not provide alignment

Probable cause

This stop is generated when the driver tries to read or write misaligned data on hardware that does not provide alignment. For example, 16-bit values must be aligned on 2-byte boundaries; 32-bit values on 4-byte boundaries, and so on. To debug this stop: $ u parameter1 - to unassemble the culprit code $ .exr parameter2 - to display the exception information; $ .cxr parameter3 - to display the exception context information $ kb - to display the stack trace when the exception was raised.

Information displayed by Application Verifier
  • Parameter 1 - Code where the data type misalignment occurred.
  • Parameter 2 - Exception record. Use .exr to display it.
  • Parameter 3 - Context record. Use .cxr to display it.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: DATATYPE_MISALIGNMENT
  • Stop code: 0000D002
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Invalid handle exception for current stack trace

Probable cause

This stop is generated when the function on the top of the stack passes an invalid handle to a system routine. Usually the kb command will reveal the value of the handle passed in the call stack. The handle will be one of the parameters of the call. Often it is the first parameter. A null handle value is one example of an invalid handle value. If the handle value appears to be valid, use the !htrace debugger extension to view the history of operations that involved the handle value. Sometimes a handle value that appears to be valid can be invalid if the handle is used after it was closed.

Information displayed by Application Verifier
  • Parameter 1 - Exception code.
  • Parameter 2 - Exception record. Use .exr to display it.
  • Parameter 3 - Context record. Use .cxr to display it.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_HANDLE
  • Stop code: 0000D003
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Core driver is sending a closed printer handle to the plug-in

Probable cause

The core driver is sending the plug-in a printer handle that has already been closed. Report this error to Microsoft because it could be a problem in Microsoft's core printer driver module. To identify the routine that tried to use the closed printer handle, dump the current stack trace by using the 'k' command in the debugger. To dump the stack trace of the routine that closed the handle, use the dps command with the second parameter of the stop.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being sent to the plug-in.
  • Parameter 2 - Stack trace of the closing routine.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PRINTER_HANDLE_ALREADY_CLOSED
  • Stop code: 0000D004
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Core driver is sending an unknown printer handle to the plug-in

Probable cause

The core driver is sending the plug-in a printer handle that was not opened by calling OpenPrinterA, OpenPrinterW, OpenPrinter2W in Windows Vista, AddPrinterA, or AddPrinterW. Report this error to Microsoft because it could be a problem in Microsoft's core printer driver module.

Information displayed by Application Verifier
  • Parameter 1 - Printer handle being sent to plug-in.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_PRINTER_HANDLE
  • Stop code: 0000D005
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The plug-in closed the printer handle

Probable cause

The plug-in closed the printer handle that it received as input from the core driver. This violates the WDK rules for a call from the core driver to the plug-in. Use dps on the second parameter of the stop in order to dump the stack trace of the routine that closed the handle.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Printer handle that was closed.
  • Parameter 2 - Stack trace of the closing. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PLUGIN_CLOSED_PRINTER_HANDLE
  • Stop code: 0000D006
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Invalid number of supported Print Schema major versions

Probable cause

The PrintTicket provider plug-in returned an invalid number of supported Print Schema major versions. The IPrintOemPrintTicketProvider::GetSupportedVersions method in the plug-in is expected to return at least one supported major version. Because Windows Vista supports only one major version of the Print Schema, the plug-in is expected to return a value of one.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Number of supported schema versions that were returned.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PRINTTICKET_PROVIDER_INVALID_NUMBER_OF_SUPPORTED_SCHEMA_VERSIONS
  • Stop code: 0000D007
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Missing supported Print Schema versions

Probable cause

The PrintTicket provider plug-in indicated that it was returning at least one supported Print Schema version but failed to return any. The call to the IPrintOemPrintTicketProvider::GetSupportedVersions method in the plug-in accepts two out pointers as arguments. The ppVersions argument points to an array of integers representing the supported major versions of the Print Schema. The cVersions argument points to the number of elements in the array of integers that is being returned. This verifier stop occurs when the plug-in returns a valid number in cVersions but fails to return anything in the ppVersions array.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Number of supported Print Schema versions that were returned.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PRINTTICKET_PROVIDER_MISSING_SUPPORTED_SCHEMA_VERSION
  • Stop code: 0000D008
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Invalid Print Schema major version

Probable cause

The PrintTicket provider plug-in returned an invalid Print Schema major version. The call to the IPrintOemPrintTicketProvider::GetSupportedVersions method in the plug-in is expected to return a value of one (1) because the only major version of the Print Schema supported by Windows Vista is 1.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Print Schema version that was returned.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PRINTTICKET_PROVIDER_INVALID_SUPPORTED_SCHEMA_VERSION
  • Stop code: 0000D009
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Invalid OEMPTOPTS value

Probable cause

The PrintTicket provider plug-in returned an invalid OEMPTOPTS value. One of the arguments to the IPrintOemPrintTicketProvider::BindPrinter method in the plug-in is a pointer to an OEMPTOPTS enumeration. The plug-in is expected to set the value of this argument to one of the values supported by Windows Vista. The values supported by Windows Vista are OEMPT_DEFAULT and OEMPT_NOSNAPSHOT. This verifier stop occurs when the plug-in returns a value that is not one of these supported values.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - OEMPTOPTS value that was returned.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PRINTTICKET_PROVIDER_INVALID_OEMPTOPTS
  • Stop code: 0000D00A
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Missing Print Schema private namespace

Probable cause

The PrintTicket provider plug-in indicated that it was returning at least one Print Schema private namespace but did not return any. The call to the IPrintOemPrintTicketProvider::BindPrinter method in the plug-in contains two out pointer arguments through which the plug-in can return information about the Print Schema private namespaces that it supports. The ppNamespaces argument points to an array of strings representing the supported Print Schema private namespaces. The cNamespaces argument points to the number of elements in the array of strings that is being returned. This verifier stop occurs when the plug-in returns a valid number in cNamespaces but does not return anything in the ppNamespaces array.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Number of expected namespaces.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PRINTTICKET_PROVIDER_MISSING_NAMESPACE
  • Stop code: 0000D00B
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Incorrect reference counting detected in the plug-in

Probable cause

The WDK states that plug-ins must perform accurate reference counting in their implementation of the IUnknown::AddRef and IUnknown::Release methods. The lifetime of the plug-in's interface object depends on accurate reference counting. If the reference counting is inaccurate, it can result in a resource leak or lead to the premature unloading of the plug-in which will cause the driver to fail. This verifier stop occurs when incorrect reference counting is detected in the plug-in.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - Expected reference count.
  • Parameter 2 - Actual reference count maintained by the plug-in.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PLUGIN_MISMATCHED_REFCOUNT
  • Stop code: 0000D00C
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

pptl is NULL in OEMNextBand

Probable cause

The pptl passed in by the core driver to the OEMNextBand hook in the plug-in was NULL. The core driver should always send a valid pptl to the OEMNextBand hook in the plug-in. Report this error to Microsoft because it could be a problem in Microsoft's core printer driver module.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PPTL_IS_NULL_IN_OEMNEXTBAND
  • Stop code: 0000D00D
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned a NULL PDEV after returning S_OK from the EnablePDEV method

Probable cause

The private PDEV returned by the plug-in was NULL although the return value from the EnablePDEV method was S_OK indicating success. The WDK states that if the EnablePDEV method of a plug-in returns a status of S_OK, it must also allocate an instance of its private PDEV structure, initialize it, and return the address of this structure in the method's pDevOem parameter. This verifier stop occurs when the plug-in does not return a valid private PDEV structure when from its implementation of the EnablePDEV method returns a status of S_OK.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PLUGIN_PRIVATE_PDEV_IS_NULL
  • Stop code: 0000D00E
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned a private DEVMODE that is smaller than the minimum size allowed

Probable cause

The private DEVMODE returned by the plug-in should be at least the size of OEM_DMEXTRAHEADER. The DevMode method of a plug-in must return the size required to store its private DEVMODE members when it is called with the OEMDM_SIZE mode. This value is set the first time the method is called. The DevMode method in the plug-in must set the value of the cbBufSize member in the OEMDMPARAM structure to the number of bytes needed and that value must be greater than or equal to the size of OEM_DMEXTRAHEADER. This verifier stop occurs when the size returned in the cbBufSize member in the OEMDMPARAM structure is less than the size of OEM_DMEXTRAHEADER.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - Mode for the current DevMode callback.
  • Parameter 2 - Size of the plug-in's private DEVMODE.
  • Parameter 3 - Size of OEM_DMEXTRAHEADER.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_PLUGIN_PRIVATE_DEVMODE_SIZE
  • Stop code: 0000D00F
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned a private DEVMODE with a different size than the size returned by the DevMode(OEMDM_SIZE) call

Probable cause

The plug-in should return a private DEVMODE with a size that is the same as that returned by the DevMode call with OEMDM_SIZE mode. The DevMode method of a plug-in must return the size required to store its private DEVMODE members when the DevMode method is called with the OEMDM_SIZE mode. This value is a constant and is set the first time the method is called. It must not change when subsequent calls are made to the plug-in's DevMode method. This verifier stop occurs when the DevMode method in the plug-in returns a value that is different from the value it returned the first time it was called.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - Mode for the current Devmode callback.
  • Parameter 2 - Size of output plug-in private DEVMODE as specified in pOEMDMOut.
  • Parameter 3 - Size of output plug-in private DEVMODE as specified in pOEMDMParam.
  • Parameter 4 - Size of plug-in private DEVMODE as specified during the OEMDM_SIZE call.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PLUGIN_PRIVATE_DEVMODE_MISMATCHED_SIZE
  • Stop code: 0000D010
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned an invalid signature from the GetInfo(OEMGI_GETSIGNATURE) call

Probable cause

The plug-in should return a valid, non-zero signature when it is called during the GetInfo call with a mode of OEMGI_GETSIGNATURE. The GetInfo method in the plug-in must return a unique, four-byte identification signature. This verifier stop occurs when the GetInfo(OEMGI_GETSIGNATURE) method in the plug-in returns a zero signature.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_PLUGIN_SIGNATURE
  • Stop code: 0000D011
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned a different signature in the private DEVMODE than it returned from the GetInfo call

Probable cause

The plug-in should return a private DEVMODE that contains the same unique four-byte identification signature that it returned with the OEMGI_GETSIGNATURE call to the GetInfo method in the plug-in. This verifier stop occurs when these two signatures are not identical.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - Mode for the current DevMode method call.
  • Parameter 2 - Signature as specified in the output plug-in private DEVMODE.
  • Parameter 3 - Signature as specified during the GetInfo call.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PLUGIN_PRIVATE_DEVMODE_MISMATCHED_SIGNATURE
  • Stop code: 0000D012
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The EnableDriver method in the plug-in failed.

Probable cause

The EnableDriver method in the plug-in is not expected to fail, although it may fail under exceptional circumstances.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - HRESULT returned by EnableDriver.
  • Parameter 2 - Error code set by plug-in.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: ENABLEDRIVER_FAILED
  • Stop code: 0000D013
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

The EnableDriver method in the plug-in failed without setting the last error code

Probable cause

The EnableDriver method in the plug-in is not expected to fail although it may fail under exceptional circumstances. If it does fail, it must set the last error code by calling SetLastError. This verifier stop occurs when the EnableDriver method in the plug-in fails without setting the last error.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - HRESULT returned by EnableDriver.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: ENABLEDRIVER_FAILED_WITHOUT_ERROR_CODE
  • Stop code: 0000D014
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

The core driver called SetBandSize although the plug-in returned S_OK from DriverDMS

Probable cause

The core driver is not expected to call SetBandSize if the plug-in implements the DriverDMS method and its implementation of the DriverDMS method returns S_OK. Report this error to Microsoft because it could be a problem in Microsoft's core printer driver module.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_SETBANDSIZE_CALL
  • Stop code: 0000D015
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The core driver made the WritePrinter initialization call with invalid parameters

Probable cause

During the initialization call of WritePrinter, the pdevobj and pBuf arguments should be NULL and cbBuf should be zero. One of these conditions wasn't true when the core driver made the initialization call to the WritePrinter method in the plug-in. Report this error to Microsoft because it could be a problem in Microsoft's core printer driver module.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_WRITEPRINTER_INITIALIZATION_CALL
  • Stop code: 0000D016
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

The WritePrinter method in the plug-in failed

Probable cause

This verifier stop occurs when the WritePrinter method in the plug-in failed. This will cause the print job to be aborted.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the plug-in module at %lS
  • Parameter 1 - HRESULT returned by the WritePrinter method in the plug-in.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: WRITEPRINTER_FAILED
  • Stop code: 0000D017
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Core driver sent an invalid PrintTicket to the plug-in

Probable cause

This verifier stop occurs when a PrintTicket document that was sent from the core driver to the plug-in did not conform to the PrintSchema. Since the core driver parses the driver's GPD/PPD to construct the PrintTicket that is sent to the plug-in, this stop is usually indicative of a bug in the driver's GPD/PPD.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused when the core driver called the plug-in's %lS method
  • Parameter 1 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 2 - PrintTicket XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_COREDRIVER_PRINTTICKET
  • Stop code: 0000D018
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned an invalid PrintTicket to the core driver

Probable cause

This verifier stop occurs when a PrintTicket document that was returned to the core driver from the plug-in did not conform to the PrintSchema.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 2 - PrintTicket XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_PLUGIN_PRINTTICKET
  • Stop code: 0000D019
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Core driver sent an invalid PrintCapabilities document to the plug-in

Probable cause

This verifier stop occurs when a PrintCapabilities document that was sent from the core driver to the plug-in did not conform to the PrintSchema. Report this error to Microsoft because it could be a problem in Microsoft's core printer driver module.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused when the core driver called the plug-in's %lS method
  • Parameter 1 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 2 - PrintCapabilities XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_COREDRIVER_PRINTCAPABILITIES
  • Stop code: 0000D01A
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

The plug-in returned an invalid PrintCapabilities document to the core driver

Probable cause

This verifier stop occurs when a PrintCapabilities document that was returned to the core driver from the plug-in did not conform to the PrintSchema.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the %lS method in the plug-in module at %lS
  • Parameter 1 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 2 - PrintCapabilities XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_PLUGIN_PRINTCAPABILITIES
  • Stop code: 0000D01B
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

PTConform encountered an unexpected error

Probable cause

This verifier stop occurs when the PrintVerifier encounters an unexpected error while attempting to verify that the PrintTicket/PrintCapabilities conforms to the PrintSchema. Report this error to Microsoft because it could be a problem in the PrintVerifier.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PTCONFORM_UNEXPECTED_ERROR
  • Stop code: 0000D01C
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter calls pipeline manager interface with invalid argument value

Probable cause

This verifier stop occurs when a print filter calls a pipeline method with an incorrect argument value. Use the stack trace to find the name of the print filter DLL.

Information displayed by Application Verifier
  • Format: -  %s method : Invalid value for %s argument.
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Argument value.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FILTER_INVALID_ARGUMENT
  • Stop code: 0000D01D
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter call to IPrintPipelinePropertyBag overwrites or removes common property

Probable cause

This verifier stop occurs when a print filter changes or deletes a common property from print pipeline property bag.

Information displayed by Application Verifier
  • Format: -  %s method : Overwriting common property %s
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Property value (variant).
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FILTER_PROPERTY_BAG_INVALID_CHANGE
  • Stop code: 0000D01E
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter calls pipeline manager interface out of order

Probable cause

This verifier stop occurs when a print filter calls the pipeline manager interface methods in an unexpected sequence.

Information displayed by Application Verifier
  • Format: -  Incorrect call order for %s interface : %s
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FILTER_INVALID_CALL_ORDER
  • Stop code: 0000D01F
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter has mismatch of AddRef/Release calls to pipeline manager interface

Probable cause

This verifier stop occurs when a print filter incorrectly manages the reference count of the pipeline manager interface.

Information displayed by Application Verifier
  • Format: -  Interface %s ref count is %d, expected %s.
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FILTER_REFCOUNT_MISMATCH
  • Stop code: 0000D020
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter call to pipeline manager interface method is not expected

Probable cause

This verifier stop occurs when a print filter makes an unnecessary or unexpected call to a pipeline interface method. For example, if the print filter makes a second call to IPrintWriteStream::Close.

Information displayed by Application Verifier
  • Format: -  Interface method %s : %s
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FILTER_UNEXPECTED_CALL
  • Stop code: 0000D021
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Pipeline manager calls print filter interface methods out of order

Probable cause

This verifier stop occurs when the pipeline manager incorrectly calls the methods of the print filter interface. Report this error to Microsoft because it could be a problem in the print filter pipeline service.

Information displayed by Application Verifier
  • Format: -  Invalid call order to Print Filter : %s
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PIPELINE_INVALID_CALL_ORDER
  • Stop code: 0000D022
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Pipeline manager calls print filter interface method with invalid argument value

Probable cause

This verifier stop occurs when the pipeline manager calls a print filter interface with an invalid argument value. Report this error to Microsoft because it could be a problem in the print filter pipeline service.

Information displayed by Application Verifier
  • Format: -  Method %s: %s
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Argument value.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PIPELINE_INVALID_INPUT_ARGUMENT
  • Stop code: 0000D023
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Pipeline manager returns invalid value to print filter

Probable cause

This verifier stop occurs when the pipeline manager returns an invalid value to the print filter. Report this error to Microsoft because it could be a problem in the print filter pipeline service.

Information displayed by Application Verifier
  • Format: -  Method %s: %s
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Value.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: PIPELINE_INVALID_OUTPUT_ARGUMENT
  • Stop code: 0000D024
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

A call to a printer driver changed the security context.

Probable cause

This stop usually occurs when a print driver calls either RevertToSelf() or RevertToPrinterSelf() but did not change the security context back to impersonating the user by calling ImpersonatePrinterClient(). This is not allowed and print spooler behavior is undefined after this happens. This can also create a security vulnerability and allow a remote authenticated elevation of privilege type of attack.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by the '%lS' method in the plug-in module at '%lS'
  • Parameter 1 - Account name at driver entry. Type 'du address' to dump it if not NULL.
  • Parameter 2 - Account name at driver exit. Type 'du address' to dump it if not NULL.
  • Parameter 3 - Security token at driver entry
  • Parameter 4 - Security token at driver exit

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: SECURITY_CONTEXT_CHANGED_BY_A_PRINT_DRIVER_CALL
  • Stop code: 0000D025
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter sent an invalid PrintTicket to pipeline manager

Probable cause

This verifier stop occurs when an IPrintTicketPart part was sent to a SetPrintTicket method but its content does not conform to the PrintSchema.

Information displayed by Application Verifier
  • Format: - This verifier stop was in %lS method. Use GUID to identify Print filter.
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 3 - PrintTicket XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_FILTER_PRINTTICKET
  • Stop code: 0000D026
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter received an invalid PrintTicket from pipeline manager

Probable cause

This verifier stop occurs when an IPrintTicketPart part was received from Print filter via GetPrintTicket method but its content does not conform to the PrintSchema.

Information displayed by Application Verifier
  • Format: - This verifier stop was in %lS method. Use GUID to identify Print filter.
  • Parameter 1 - Print Filter GUID. Use dd to dump it if this parameter is not NULL.
  • Parameter 2 - Error messages returned by PTConform. Use du to dump the message if this parameter is not NULL.
  • Parameter 3 - PrintTicket XML text. Use du to dump the XML if this parameter is not NULL.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: INVALID_PIPELINE_PRINTTICKET
  • Stop code: 0000D027
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

Unloading print driver DLL with active COM callback.

Probable cause

Positive reference count on COM interface was detected while target module is unloaded. Probably caused by incorrect implementation of DllCanUnloadNow export in module or incorrect reference counting.

Information displayed by Application Verifier
  • Format: -  This verifier stop was caused by %lS module unload while the system still holds a %lS pointer to it.
  • Parameter 1 - COM interface address.
  • Parameter 2 - Stack trace where callback was provided. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: DLL_PREMATURE_UNLOAD
  • Stop code: 0000D028
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Attempt to use a released COM interface

Probable cause

COM interface was used after being released. To troubleshoot this stop: - Dump the current stack trace by using the 'k' command in the debugger to identify the routine that tried to use the released interface. - Dump the stack trace of the routine that released it by using the dps command with the second parameter of the stop if available.

Information displayed by Application Verifier
  • Format: - This verifier stop was caused by %lS interface being used after release.
  • Parameter 1 - COM interface address.
  • Parameter 2 - Stack trace of the Release call when reference count went to zero. Use dps to dump the stack trace if it is not NULL.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: COM_INTERFACE_ALREADY_RELEASED
  • Stop code: 0000D029
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

A print driver called ExitThread

Probable cause

A print driver module called ExitThread. When a print driver module calls ExitThread, the thread is exited before any destructors can be called or any other automatic cleanup can be performed. This can lead to undefined behavior. Therefore, print drivers should always return from their thread function. To troubleshoot this stop: Dump the current stack trace by using the 'k' command in the debugger to identify the routine that invoked ExitThread.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: DRIVER_CALLED_EXITTHREAD
  • Stop code: 0000D02A
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

A print driver called TerminateThread

Probable cause

A print driver module called TerminateThread. TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code. DLLs attached to the thread are not notified that the thread is terminating. The system frees the thread's initial stack. TerminateThread is a dangerous function that should only be used in the most extreme cases. For example, TerminateThread can result in the following problems: - If the target thread owns a critical section, the critical section will not be released. - If the target thread is allocating memory from the heap, the heap lock will not be released. - If the target thread is executing certain kernel32 calls when it is terminated, the kernel32 state for the thread's process could be inconsistent. - If the target thread is manipulating the global state of a shared DLL, the state of the DLL could be destroyed, affecting other users of the DLL. To troubleshoot this stop: Dump the current stack trace by using the 'k' command in the debugger to identify the module and routine that invoked TerminateThread.

Information displayed by Application Verifier
  • Parameter 1 - Not used.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: DRIVER_CALLED_TERMINATETHREAD
  • Stop code: 0000D02B
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print filter changed the COM apartment type for the current thread.

Probable cause

This verifier stop occurs when a print filter changes the COM apartment type in one of its methods (InitializeFilter, StartOperation, or ShutdownOperation). Use the 'ln poi(<Param1>)' command in the debugger to identify the name of the print filter DLL.

Information displayed by Application Verifier
  • Format: -  This verifier stop was caused by a print filter's %lS method changing the COM apartment type from %lS(%d) to %lS(%d).
  • Parameter 1 - Filter interface pointer. Use 'ln poi(<Param1>)' to find the filter.
  • Parameter 2 - Expected apartment type
  • Parameter 3 - Actual apartment type
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: COM_APARTMENT_TYPE_CHANGED
  • Stop code: 0000D02C
  • Severity: Warning
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

COM is not initialized for the current thread after call to print filter method.

Probable cause

This verifier stop occurs when a print filter has unbalanced CoInitialize[Ex] and CoUninitialize calls. This could be due to CoInitialize[Ex] unexpectedly returning failure, such as when the request apartment type does not match the thread's current type. Use the 'ln poi(<Param1>)' command in the debugger to identify the name of the print filter DLL.

Information displayed by Application Verifier
  • Format: -  This verifier stop was likely caused by a print filter's %lS method calling COM's CoUninitialize without a corresponding successful CoInitialize[Ex].
  • Parameter 1 - Filter interface pointer. Use 'ln poi(<value>)' to find the filter.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: COM_NOT_INITIALIZED
  • Stop code: 0000D02D
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

Print driver has mismatch of AddRef/Release calls of PT/PC XML Document.

Probable cause

This verifier stop occurs when a print driver incorrectly manages the reference count of an XML Document (eg, PrintTicket or PrintCapabilities). The reference count was not expected to be changed by the method call and will likely lead to a leak and/or an orphaned critical section in the XML DOC.

Information displayed by Application Verifier
  • Format: -  After %lS method call, %lS XML Document ref count is %d, expected %d.
  • Parameter 1 - Name of offending method call. If not NULL, Use 'du' to display this.
  • Parameter 2 - Type of XML Document. If not NULL, Use 'du' to display this.
  • Parameter 3 - Current reference count.
  • Parameter 4 - Expected reference count.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: XML_DOM_REFCOUNT_CHANGED
  • Stop code: 0000D02E
  • Severity: Error
  • One-time error: no
  • Error report: Break
  • Log to file: yes
  • Create backtrace: yes

FatalExit was called

Probable cause

FatalExit was called. This is a form of abnormal termination which may cause other verifier stops to be reported (eg. leaks), but for which no corrective action is possible (ie, the stops are unreliable and noisy). To troubleshoot this stop: Dump the current stack trace by using the 'k' command in the debugger to identify the module and routine that invoked FatalExit.

Information displayed by Application Verifier
  • Parameter 1 - Exit code.
  • Parameter 2 - Not used.
  • Parameter 3 - Not used.
  • Parameter 4 - Not used.

Additional Information
  • Test Layer: PrintDriver
  • Stop ID: FATALEXIT
  • Stop code: 0000D02F
  • Severity: Info
  • One-time error: no
  • Error report: None
  • Log to file: yes
  • Create backtrace: yes

See Also

Application Verifier - Stop Codes and Definitions

Application Verifier - Overview

Application Verifier - Features

Application Verifier - Testing Applications

Application Verifier - Tests within Application Verifier

Application Verifier - Debugging Application Verifier Stops

Application Verifier - Frequently Asked Questions