This sample code will print out all the ports an associated information. This is done at level 1, and for the local workstation.
#define INCL_DOSMEMMGR #define INCL_SPL #define INCL_SPLDOSPRINT #define INCL_SPLERRORS #include <os2.h> #include <stdio.h> INT main () { SPLERR splerr ; ULONG cbBuf ; ULONG cTotal; ULONG cReturned ; ULONG cbNeeded ; ULONG ulLevel = 1; ULONG i ; PSZ pszComputerName = NULL; PVOID pbuf ; PPRPORTINFO1 pPort1 ; splerr = SplEnumPort(pszComputerName, ulLevel, pbuf, 0L, /* cbBuf */ &cReturned, &cTotal, &cbNeeded, NULL) ; if (splerr == ERROR_MORE_DATA || NERR_BufTooSmall ) { if (!DosAllocMem( &pbuf, cbNeeded, PAG_READ|PAG_WRITE|PAG_COMMIT) ) { cbBuf = cbNeeded ; splerr = SplEnumPort(pszComputerName, ulLevel, pbuf, cbBuf, &cReturned, &cTotal, &cbNeeded, NULL) ; if (splerr == 0L) { pPort1 = (PPRPORTINFO1)pbuf ; printf("Port names: "); for (i=0; i < cReturned; i++) { printf("Port - %s, Driver - %s Path - %s\n ", pPort1->pszPortName, pPort1->pszPortDriverName, pPort1->pszPortDriverPathName ) ; pPort1++ ; } printf("\n"); } DosFreeMem(pbuf) ; } } else { printf("SplEnumPort splerr=%ld, \n",splerr) ; } DosExit( EXIT_PROCESS , 0 ) ; return (splerr); } /* end main */