SplQueryDevice - Example Code

This sample code returns information for the device name that is entered at the command line. The local workstation is selected. The query is done for level 3 information.

#define INCL_BASE
#define INCL_DOSMEMMGR
#define INCL_SPL
#define INCL_SPLDOSPRINT
#define INCL_SPLERRORS

#include <os2.h>
#include <stdio.h>

INT main (argc, argv)
    INT argc;
    CHAR *argv[];
{
    SPLERR splerr  ;
    ULONG  cbBuf;
    ULONG  cbNeeded ;
    ULONG  ulLevel ;
    PSZ    pszComputerName ;
    PSZ    pszPrintDeviceName ;
    PVOID  pBuf ;
    PPRDINFO3 pprd3 ;

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

    pszComputerName = (PSZ)NULL ;
    pszPrintDeviceName = argv[1];
    ulLevel = 3;
    splerr = SplQueryDevice(pszComputerName, pszPrintDeviceName,
                            ulLevel, (PVOID)NULL, 0L, &cbNeeded );
    if (splerr != NERR_BufTooSmall)
    {
       printf("SplQueryDevice Err=%ld, cbNeeded=%ld\n",splerr, cbNeeded) ;
       DosExit( EXIT_PROCESS , 0 ) ;
    }
    if (!DosAllocMem( &pBuf, cbNeeded,
                      PAG_READ|PAG_WRITE|PAG_COMMIT) ){
       cbBuf= cbNeeded ;
       splerr = SplQueryDevice(pszComputerName, pszPrintDeviceName,
                              ulLevel, pBuf, cbBuf, &cbNeeded) ;

       printf("SplQueryDevice Error=%ld, Bytes Needed=%ld\n", splerr,
                              cbNeeded) ;

       pprd3=(PPRDINFO3)pBuf;

       printf("Print Device info: name - %s\n", pprd3->pszPrinterName) ;
       printf("User Name      = %s\n", pprd3->pszUserName) ;
       printf("Logical Address= %s\n", pprd3->pszLogAddr) ;
       printf("Job ID         = %d\n", pprd3->uJobId) ;
       printf("Status         = %d\n", pprd3->fsStatus) ;
       printf("Status Comment = %s\n", pprd3->pszStatus) ;
       printf("Comment        = %s\n", pprd3->pszComment) ;
       printf("Drivers        = %s\n", pprd3->pszDrivers) ;
       printf("Time           = %d\n", pprd3->time) ;
       printf("Time Out       = %d\n", pprd3->usTimeOut) ;
       DosFreeMem(pBuf) ;
    }
    DosExit( EXIT_PROCESS , 0 ) ;
    return (splerr);
}


[Back: SplQueryDevice - Related Functions]
[Next: SplQueryDevice - Topics]