AddPrintProvidor function

Important

On July 6, 2021, KB5005010 introduced an optional registry-based configuration option to restrict access to this API to admin users only. This option was off be default.

On August 10, 2021, KB5005652 changes this configuration's default value to require admin rights to install new printer drivers.

The AddPrintProvidor function installs a local print provider and links the configuration, data, and provider files.

Syntax

BOOL AddPrintProvidor(
  _In_ LPTSTR pName,
  _In_ DWORD  Level,
  _In_ LPBYTE pProviderInfo
);

Parameters

pName [in]

A pointer to a null-terminated string that specifies the name of the server on which the provider should be installed. For systems that only support local installation of providers, this parameter should be NULL.

Level [in]

The level of the structure to which pProviderInfo points. It can be one of the following.

Value Meaning
1
Function uses a PROVIDOR_INFO_1 structure.
2
Function uses a PROVIDOR_INFO_2 structure.

pProviderInfo [in]

A pointer to a print provider structure, as indicated by Level.

Return value

If the function succeeds, the return value is a nonzero value.

If the function fails, the return value is zero.

Remarks

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.

Before an application calls the AddPrintProvidor function, all files required by the provider must be copied to the SYSTEM32 directory.

A provider added by AddPrintProvidor may be removed by calling DeletePrintProvidor.

Requirements

Requirement Value
Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Header
Winspool.h (include Windows.h)
Library
Winspool.lib
DLL
Winspool.drv
Unicode and ANSI names
AddPrintProvidorW (Unicode) and AddPrintProvidorA (ANSI)

See also

Printing

Print Spooler API Functions

DeletePrintProvidor

PROVIDOR_INFO_1

PROVIDOR_INFO_2