|
|
#include "precomp.h"
#pragma hdrstop
/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
printer.c
Abstract:
Printer module for Win32 PDK Setup. This module has no external dependencies and is not statically linked to any part of Setup.
Author:
Sunil Pai (sunilp) March 1992
--*/
//
// Get Windows system printer directory
//
CB GetPrinterDriverDir( IN RGSZ Args, IN USHORT cArgs, OUT SZ ReturnBuffer, IN CB cbReturnBuffer ) { DWORD cbRet = 0; SZ szServerName = NULL ; SZ szEnvironment = NULL ;
Unused(Args); Unused(cArgs);
if ( (cArgs >= 2) ) {
if (*(Args[0]) != '\0') { szServerName = Args[0]; }
if (*(Args[1]) != '\0') { szEnvironment = Args[1]; }
}
GetPrinterDriverDirectory( szServerName, // pName
szEnvironment, // pEnvironment
1, // Level
ReturnBuffer, // pDriverDirectory
cbReturnBuffer, // cbBuf
&cbRet // pcbNeeded
);
if ( cbRet == 0 ) { ReturnBuffer[0] = '\0'; }
return lstrlen(ReturnBuffer)+1; }
BOOL AddPrinterDriverWorker( IN LPSTR Model, IN LPSTR Environment, IN LPSTR Driver, IN LPSTR DataFile, IN LPSTR ConfigFile, IN LPSTR Server ) { DRIVER_INFO_2 DriverInfo2;
ZeroMemory( &DriverInfo2, sizeof(DRIVER_INFO_2) ); DriverInfo2.cVersion = 0; DriverInfo2.pName = Model; // QMS 810
DriverInfo2.pEnvironment = Environment; // W32x86
DriverInfo2.pDriverPath = Driver; // c:\drivers\pscript.dll
DriverInfo2.pDataFile = DataFile; // c:\drivers\QMS810.PPD
DriverInfo2.pConfigFile = ConfigFile; // c:\drivers\PSCRPTUI.DLL
if(AddPrinterDriver(Server, 2, (LPBYTE)&DriverInfo2)) { SetReturnText( "ADDED" ); } else { switch(GetLastError()) { case ERROR_PRINTER_DRIVER_ALREADY_INSTALLED: SetReturnText( "PRESENT" ); break; case ERROR_ACCESS_DENIED: SetReturnText( "DENIED" ); break; default: SetReturnText( "ERROR" ); break; } } return (TRUE); }
BOOL AddPrinterWorker( IN LPSTR Name, IN LPSTR Port, IN LPSTR Model, IN LPSTR Description, IN LPSTR PrintProcessor, IN DWORD Attributes, IN LPSTR Server ) { PRINTER_INFO_2 PrinterInfo2; HANDLE bStatus;
ZeroMemory( &PrinterInfo2, sizeof(PRINTER_INFO_2) ); PrinterInfo2.pServerName = NULL; PrinterInfo2.pPrinterName = Name; PrinterInfo2.pShareName = NULL; PrinterInfo2.pPortName = Port; PrinterInfo2.pDriverName = Model; PrinterInfo2.pComment = Description; PrinterInfo2.pLocation = NULL; PrinterInfo2.pDevMode = (LPDEVMODE)NULL; PrinterInfo2.pSepFile = NULL; PrinterInfo2.pPrintProcessor = PrintProcessor; PrinterInfo2.pDatatype = NULL; PrinterInfo2.pParameters = NULL; PrinterInfo2.Attributes = Attributes; PrinterInfo2.Priority = 0; PrinterInfo2.DefaultPriority = 0; PrinterInfo2.StartTime = 0; PrinterInfo2.UntilTime = 0; PrinterInfo2.Status = 0; PrinterInfo2.cJobs = 0; PrinterInfo2.AveragePPM = 0;
bStatus = AddPrinter( Server, 2, (LPBYTE)&PrinterInfo2); if ( bStatus != (HANDLE)NULL ) {
SetReturnText( "ADDED" ); ClosePrinter(bStatus); return( TRUE );
} else {
switch(GetLastError()) { case ERROR_PRINTER_ALREADY_EXISTS: SetReturnText( "PRESENT" ); break; #if 0
case ERROR_ACCESS_DENIED: SetReturnText( "DENIED" ); break; #endif
default: SetReturnText( "ERROR" ); break; } return( TRUE ); }
}
BOOL AddPrinterMonitorWorker( IN LPSTR Model, IN LPSTR Environment, IN LPSTR Driver, IN LPSTR Server ) { MONITOR_INFO_2 MonitorInfo2;
ZeroMemory( &MonitorInfo2, sizeof(MONITOR_INFO_2) ); MonitorInfo2.pName = Model; // Local Port
MonitorInfo2.pEnvironment = Environment; // W32x86
MonitorInfo2.pDLLName = Driver; // c:\winnt\system32\localmon.dll
if(AddMonitor(Server, 2, (LPBYTE)&MonitorInfo2)) { SetReturnText( "ADDED" ); } else { switch(GetLastError()) { case ERROR_ALREADY_EXISTS: SetReturnText( "PRESENT" ); break; case ERROR_ACCESS_DENIED: SetReturnText( "DENIED" ); break; default: SetReturnText( "ERROR" ); break; } } return (TRUE); }
|