18.104.22.168.4 RpcDeletePrinter (Opnum 6)
RpcDeletePrinter is a method that deletes the specified printer object.
DWORD RpcDeletePrinter( [in] PRINTER_HANDLE hPrinter );
Return Values: This method MUST return zero (ERROR_SUCCESS) to indicate successful completion or a nonzero Windows error code to indicate failure, as specified in [MS-ERREF].
Upon receiving this message, the server MUST validate parameters as follows:
Perform the validation steps as specified in PRINTER_HANDLE Parameters (section 22.214.171.124.11).
If any jobs are pending on the printer, use the implementation-specific policy<319> to determine if a delete operation can be made pending or if an error is returned.
Additional validation MAY<320> 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:
Mark the printer object as "Delete Pending".
Modify the list of printers in the system to exclude the deleted printer for any subsequent calls to RpcEnumPrinters, RpcOpenPrinter, RpcOpenPrinterEx, and RpcStartDocPrinter. Clients that already have a valid handle to the same printer object MAY continue using the printer object for all operations except RpcStartDocPrinter.
If the deleted printer has been published to the directory service, delete the print queue object from the directory as described in section 126.96.36.199.<321> If the directory service operation fails, the print server MUST continue processing the printer deletion operation and MUST NOT return the status of the directory service operation to the client.
If any clients have registered for notifications of the server object change, a notification MUST be broadcast to them.
Return the status of the operation.