AdvancedDocumentProperties function

The AdvancedDocumentProperties function displays a printer-configuration dialog box for the specified printer, allowing the user to configure that printer.

This function is a special case of the DocumentProperties function. For more details, see the Remarks section.


LONG AdvancedDocumentProperties(
  _In_  HWND     hWnd,
  _In_  HANDLE   hPrinter,
  _In_  LPTSTR   pDeviceName,
  _Out_ PDEVMODE pDevModeOutput,
  _In_  PDEVMODE pDevModeInput


hWnd [in]

A handle to the parent window of the printer-configuration dialog box.

hPrinter [in]

A handle to a printer object. Use the OpenPrinter or AddPrinter function to retrieve a printer handle.

pDeviceName [in]

A pointer to a null-terminated string specifying the name of the device for which a printer-configuration dialog box should be displayed.

pDevModeOutput [out]

A pointer to a DEVMODE structure that will contain the configuration data specified by the user.

pDevModeInput [in]

A pointer to a DEVMODE structure that contains the configuration data used to initialize the controls of the printer-configuration dialog box.

Return value

If the DocumentProperties function with these parameters is successful, the return value of AdvancedDocumentProperties is 1. Otherwise, the return value is zero.


Note  This is a blocking or synchronous function and might not return immediately. How quickly this function returns depends on run-time factors such as network status, print server configuration, and printer driver implementation—factors that are difficult to predict when writing an application. Calling this function from a thread that manages interaction with the user interface could make the application appear to be unresponsive.

This function can only display the printer-configuration dialog box so a user can configure it. For more control, use DocumentProperties. The input parameters for this function are passed directly to DocumentProperties and the fMode value is set to DM_IN_BUFFER | DM_IN_PROMPT | DM_OUT_BUFFER. Unlike DocumentProperties, this function only returns 1 or 0. Thus, you cannot determine the required size of DEVMODE by setting pDevMode to zero.

An application can obtain the name pointed to by the pDeviceName parameter by calling the GetPrinter function and then examining the pPrinterName member of the PRINTER_INFO_2 structure.


Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]


Winspool.h (include Windows.h)





Unicode and ANSI names

AdvancedDocumentPropertiesW (Unicode) and AdvancedDocumentPropertiesA (ANSI)

See also

Print Spooler API Functions