RpcAddPrinterDriver installs a printer driver on the print server and links the configuration, data, and printer driver files.

 DWORD RpcAddPrinterDriver(
   [in, string, unique] STRING_HANDLE pName,
   [in] DRIVER_CONTAINER* pDriverContainer
 );

pName: Specified in Print Server Name Parameters (section 3.1.4.1.4).

pDriverContainer: Specified in DRIVER_CONTAINER Parameters (section 3.1.4.1.8.3). The Level member of the DRIVER_CONTAINER MUST be 0x00000002, 0x00000003, or 0x00000004.

Return Values: This method MUST return zero (ERROR_SUCCESS) to indicate successful completion or a nonzero Windows error code to indicate failure [MS-ERREF].

Upon receiving this message, the server MUST perform the validation steps specified in:

Additional validation MAY<324> be performed.

In addition, print servers SHOULD<325> validate parameters as follows:

If the installation requested by the print client is a printer driver upgrade, print servers SHOULD perform the following additional validation steps:

If this validation fails, the print server MUST return ERROR_PRINTER_DRIVER_BLOCKED.

If parameter validation fails, the server MUST fail the operation immediately and return a nonzero error response to the client. Otherwise, the server MUST process the message and compose a response to the client as follows: