3.1.4.4.2 RpcEnumPrinterDrivers (Opnum 10)

RpcEnumPrinterDrivers enumerates the printer drivers installed on a specified print server.

 DWORD RpcEnumPrinterDrivers(
   [in, string, unique] STRING_HANDLE pName,
   [in, string, unique] wchar_t* pEnvironment,
   [in] DWORD Level,
   [in, out, unique, size_is(cbBuf), disable_consistency_check] 
     BYTE* pDrivers,
   [in] DWORD cbBuf,
   [out] DWORD* pcbNeeded,
   [out] DWORD* pcReturned
 );

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

pEnvironment: Specified in Environment Name Parameters (section 3.1.4.1.3).<327>

Level: The driver information level.

Value

Description

0x00000001

Corresponds to _DRIVER_INFO_1 (section 2.2.2.4.1).

0x00000002

Corresponds to _DRIVER_INFO_2 (section 2.2.2.4.2).

0x00000003

Corresponds to _DRIVER_INFO_3 (section 2.2.2.4.3).

0x00000004

Corresponds to _DRIVER_INFO_4 (section 2.2.2.4.4).

0x00000005

Corresponds to _DRIVER_INFO_5 (section 2.2.2.4.5).

0x00000006

Corresponds to _DRIVER_INFO_6 (section 2.2.2.4.6).

0x00000008

Corresponds to _DRIVER_INFO_8 (section 2.2.2.4.8).

pDrivers: A pointer to the BUFFER, as specified in INFO Structures Query Parameters (section 3.1.4.1.9).

BUFFER TYPE: _DRIVER_INFO.

This parameter can be NULL if cbBuf equals zero.

cbBuf: Specified in INFO Structures Query Parameters (section 3.1.4.1.9).

pcbNeeded: Specified in INFO Structures Query Parameters (section 3.1.4.1.9).

pcReturned: Specified in INFO Structures Query Parameters (section 3.1.4.1.9).

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 the following sections:

  • Print Server Name Parameters (section 3.1.4.1.4).

  • Environment Name Parameters (section 3.1.4.1.3).

  • INFO Structures Query Parameters (section 3.1.4.1.9).

Additional validation MAY<328> be performed.

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:<329>

  • Enumerate all drivers on the specified print server that match the requested environment.

  • Using the enumerated objects, perform the processing and response steps specified in INFO Structures Query Parameters (section 3.1.4.1.9).

  • If at any point during the operation the print server failed to calculate the size of the INFO structure for any printer driver, the print server SHOULD fail the operation immediately and return ERROR_CAN_NOT_COMPLETE.<330>

  • Return the status of the operation.