SplSetQueue

This function modifies the configuration of a print queue.

Syntax
SplSetQueue(pszComputerName, pszQueueName, ulLevel, pBuf, cbBuf, ulParmNum);

Parameters

 * pszComputerName (PSZ) - input
 * Name of computer where queue is to be modified.


 * A NULL string specifies the local workstation.


 * pszQueueName (PSZ) - input
 * Queue name.


 * ulLevel (ULONG) - input
 * Level of detail required.


 * This must be 3 or 6.


 * pBuf (PVOID) - input
 * Buffer.


 * If ulParmNum is 0, this parameter must contain a complete PRQINFO3 or PRQINFO6 structure. Otherwise, it must contain a valid new value for the parameter of the PRQINFO3 or the PRQINFO6 structure indicated in ulParmNum.


 * cbBuf (ULONG) - input
 * Size, in bytes, of Buffer.


 * ulParmNum (ULONG) - input
 * Parameter number.


 * Specifies either that the entire PRQINFO3 or PRQINFO6 structure is to be modified, or that only one specific parameter is to be modified.


 * Possible values for this parameter are as follows:

Parameter Constant (Value) uPriority PRQ_PRIORITY_PARMNUM (2) uStartTime PRQ_STARTTIME_PARMNUM (3) uUntilTime PRQ_UNTILTIME_PARMNUM (4) pszSepFile PRQ_SEPARATOR_PARMNUM (5) pszPrProc PRQ_PROCESSOR_PARMNUM (6) pszParms PRQ_PARMS_PARMNUM (8) pszComment PRQ_COMMENT_PARMNUM (9) fsType PRQ_TYPE_PARMNUM (10) pszPrinters PRQ_PRINTERS_PARMNUM (12) pszDriverName PRQ_DRIVERNAME_PARMNUM (13) pDriverData PRQ_DRIVERDATA_PARMNUM (14) pszRemoteComputerName PRQ_REMOTE_COMPUTER_PARMNUM (15) pszRemoteQueueName PRQ_REMOTE_QUEUE_PARMNUM (16)

Returns

 * rc (SPLERR) - returns
 * Return code.


 * NO_ERROR (0)
 * No errors occurred.
 * ERROR_ACCESS_DENIED (5)
 * Access is denied.
 * ERROR_NOT_SUPPORTED (50)
 * This request is not supported by the network.
 * ERROR_BAD_NETPATH (53)
 * The network path cannot be located.
 * ERROR_INVALID_PARAMETER (87)
 * An invalid parameter is specified.
 * ERROR_INVALID_LEVEL (124)
 * The level parameter is invalid.
 * NERR_NetNotStarted (2102)
 * The network program is not installed.
 * NERR_RedirectedPath (2117)
 * The operation is invalid on a redirected resource.
 * NERR_BufTooSmall (2123)
 * The API return buffer is too small.
 * NERR_QNotFound (2150)
 * The printer queue does not exist.
 * NERR_DestNotFound (2152)
 * The printer destination cannot be found.
 * NERR_DestNoRoom (2157)
 * The maximum number of printer destinations has been reached.
 * NERR_DestInvalidState (2162)
 * This operation cannot be performed on the print destination.
 * NERR_SpoolNoMemory (2165)
 * A spooler memory allocation failure occurred.
 * NERR_DriverNotFound (2166)
 * The device driver does not exist.
 * NERR_DataTypeInvalid (2167)
 * The datatype is not supported by the processor.
 * NERR_ProcNotFound (2168)
 * The queue processor is not installed.
 * NERR_BadDev (2341)
 * The requested device is invalid.
 * NERR_CommDevInUse (2343)
 * The requested device is invalid.
 * NERR_InvalidComputer (2351)
 * The computer name is invalid.

Sample
This sample code prompts the user to enter a parameter number and a value at the prompt. This value is then put into a buffer for use by the function.


 * 1) define INCL_SPL
 * 2) define INCL_SPLDOSPRINT
 * 3) define INCL_SPLERRORS


 * 1) include 
 * 2) include     /* for printf function */
 * 3) include    /* for atoi function   */
 * 4) include    /* for strlen function */

INT main (argc, argv) INT argc; CHAR *argv[]; {   CHAR   bufValue[2] = {0}; CHAR  bufInput[128]= {0}; ULONG splerr ; ULONG cbBuf ; ULONG ulParmNum ; USHORT usParm ; PSZ   pszComputerName ; PSZ   pszQueueName ; PVOID pBuf;

if (argc != 2) {      printf("Syntax:  setqryq  QueueName \n"); DosExit( EXIT_PROCESS, 0 ) ; }

/* This function will be for the local workstation. pszComputerName = (PSZ)NULL ;

/* Get the parameter from the command line. */   pszQueueName = argv[1];

/* Prompt the user for the parameter and values, and put them in buffers. */   printf("Enter Parameter number to be modified\n"); gets(&bufValue[0]); printf("Enter new parameter value \n"); gets(&bufInput[0]);

/* Convert the ParmNum to a ULONG. */   ulParmNum = atoi(&bufValue[0]); switch (ulParmNum){ case 2: case 3: case 4: case 10: /* Determine the size of the buffer needed. */         cbBuf = sizeof(PUSHORT);

/* Convert the buffer input to a USHORT. */         usParm =(USHORT)atoi(&bufInput[0]);

/* Set the pBuf pointer to point to the value obtained. */         pBuf = &usParm; break; case 5: case 6: case 8: case 9: case 12: case 13: /* Determine the size of the buffer needed. */         cbBuf = strlen(&bufInput[0])+1;

/* Set the pBuf pointer to point to the value obtained from input. */         pBuf = (PSZ)&bufInput; break; case 14: printf("For simplicity this is not implemented."); break; default: printf("Invalid number\n"); DosExit( EXIT_PROCESS, 0 ) ; break; }

/* Make the call with all the proper parameters. */   splerr = SplSetQueue(pszComputerName, pszQueueName, 3L,                         pBuf, cbBuf, ulParmNum) ;

/* Print the resultant error code, and the parameters entered. */   printf("SplSetQueue Error= %ld, Parameter= %d, cbBuf= %ld,                        ulParmNum= %ld\n",                             splerr, usParm, cbBuf, ulParmNum); DosExit( EXIT_PROCESS, 0 ) ; return (splerr); }

Call Sequence

 * 1) define INCL_SPL /* Or use INCL_PM, */
 * 2) include 

PSZ      pszComputerName;  /*  Name of computer where queue is to be modified. */ PSZ      pszQueueName;     /*  Queue name. */ ULONG    ulLevel;          /*  Level of detail required. */ PVOID    pBuf;             /*  Buffer. */ ULONG    cbBuf;            /*  Size, in bytes, of Buffer. */ ULONG    ulParmNum;        /*  Parameter number. */ SPLERR   rc;               /*  Return code. */

rc = SplSetQueue(pszComputerName, pszQueueName, ulLevel, pBuf, cbBuf, ulParmNum);

Remarks
If the uPriority field in PRQINFO3 or PRQINFO6 is set to PRQ_NO_PRIORITY, the queue priority is not changed.

Related Functions

 * SplCreateQueue
 * SplEnumDevice
 * SplEnumDriver
 * SplEnumQueue
 * SplEnumQueueProcessor
 * SplQueryQueue