JSConstraintsDebug

JSConstraintsDebug (JSConstraintsDebug.exe) is a command-line tool that provides debugging support for JavaScript Constraints while developing a V4 printer driver.

Where can I download JSConstraintsDebug?

JSConstraintsDebug.exe is included in the Microsoft Windows Driver Kit (WDK). For information about getting the WDK, see Windows Driver Kit downloads.

The tool executes each of the following relevant entry point APIs on the JavaScript constraints of the targeted driver against the user provided print ticket:

PTGetPrintCapabilities

PTConvertDevModeToPrintTicket

TConvertPrintTicketToDevMode

PTMergeAndValidatePrintTicket

During execution the tool will prompt for an appropriate IDE debugger such as Visual Studio. Upon selection, the constraints source code will be opened and stopped at a JavaScript debugger statement.

To debug JS constraints files, follow these steps:

  1. Open a Command Prompt window.

  2. Run the JSConstraintsDebug.exe tool and specify, at minimum, the printer name and the path to a test print ticket.

  3. Choose the debugging tool you wish to use.

Running JSConstraintsDebug in user mode

Elevated privileges are required to enable debugging of JS functions. To run in user mode, the following registry key must be set prior to executing JSConstraintsDebug.exe:

Key name

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

Value name

EnableJavaScriptDebugging

Type

DWORD

Value

1

JavaScript debugger statements

Breakpoints can be created in JavaScript source by using the debugger statement. This will pause operation in Visual Studio all allow for step-by-step debugging. These statements can be inserted in any of the JavaScript Constraint APIs.

For example:

function validatePrintTicket(PrintTicket, scriptContext)
{
    debugger; // debug tool will pause at this breakpoint
    ...
}

JSConstraintsDebug Command Syntax

JSConstraintsDebug <PrinterName> <PrintTicket> [MergePrintTicket] [Constraints]

Command parameters

Parameters Description

PrinterName

Required. Specifies the string name of a print driver which contains JS constraints source file. This driver will be used for all debugging operations.

PrintTicket

Required. Specifies the path and name of a print ticket XML file to be validated.

MergePrintTicket

Optional. Specifies the path and name of a print ticket XML file which will be used to validate a merge operation.

If this parameter is not set the default DevMode will be converted to a Print Ticket and will be passed to the Merge and Validate API.

Constraints

Optional. Specifies the path and name of a JavaScript constraints file which will replace the existing constraints source file found in targeted printer driver before debugging.

Note  Specifying a constraints file with the Constraints parameter will overwrite existing source code in the targeted driver.

Examples

Debug a print driver against a known test print ticket.

JSConstraintsDebug “Contoso Printer” PrintTicket.xml

Debug a print driver with a new constraints source file against a known test print ticket.

JSConstraintsDebug “Contoso Printer” PrintTicket.xml Constraints.js

Test merge and validate operations between two custom print tickets.

JSConstraintsDebug “Contoso Printer” PrintTicket.xml PrintTicket2.xml