A portok lekérdezéséhez szükséges struktúrák implementációja a WinSpool unitban található.
Az adatok lekérdezését az EnumPorts függvénnyel hajthatjuk végre. A függvénnyel kétfajta struktúrájú adatokat kérdezhetünk le. Ezek típusa TPortInfo1 és TPortInfo2.
A TPortInfo1 struktúra
Egy port nevének lekérdezésére használhatjuk.

pName
property pName: PAnsiChar;
A port neve.
A TPortInfo1 struktúra
Egy port adatait tárolja.

pPortName
property pPortName: PAnsiChar;
A port neve.

pMonitorName
property pMonitorName: PAnsiChar;
A port figyelő neve.

pDescription
property pDescription: PAnsiChar;
Leírás a portról.

fPortType
property fPortType: DWORD;
A port típusa. Értéke a következő konstansok kombinációja lehet: PORT_TYPE_WRITE, PORT_TYPE_READ, PORT_TYPE_REDIRECTED, PORT_TYPE_NET_ATTACHED.

EnumPorts
function EnumPorts(
pName: PChar;
Level: DWORD;
pPorts: Pointer;
cbBuf: DWORD;
var pcbNeeded,
pcReturned: DWORD
): BOOL;
A nyomtatásra alkalmas portok lekérdezésére szolgál.
Paraméterek
pName: PChar
A nyomtató szervert azonosítja. Ha Nil paramétert adunk meg, akkor a lekérdezés saját számítógépünkre vonatkozik.
Level: DWORD
A lekérdezéshez használt struktúrát azonosítja. Ha TPortInfo1-et használunk, akkor értékének 1-nek kell lennie. TPortInfo2 esetén 2-t kell megadnunk.
pPorts: Pointer
Itt egy pointer típusú változót kell megadnunk, amely a Level-ben megadott formátumú struktúrával rendelkezik. Ha Nil paramétert adunk meg, a cbBuf-ban pedig 0 értéket, akkor a függvényt felhasználhatjuk arra, hogy lekérdezzük a szükséges struktúra méretet. Ilyenkor a függvény visszatérési értéke hamis lesz, de a pcbNeeded paraméterben visszakapjuk a szükséges struktúraméretet.
cbBuf: DWORD
A pPorts struktúra méretét határozza meg bájtokban.
var pcbNeeded
Az itt megadott változóba a lekérdezett struktúra mérete kerül.
pcReturned: DWORD
Egy változót kell megadnunk. Ha a függvény sikeresen lefutott, akkor a változóba a lekérdezett portok száma kerül.
Visszatérési érték
Ha a függvény lefutása sikeres volt, akkor igaz értékkel tér vissza, ellenkező esetben a visszatérési érték hamis.
Az alábbi módon lekérdezhetjük a szükséges struktúraméretet, amely a pcbNeeded változóba kerül.
EnumPorts(Nil,2,Nil,0,pcbNeeded,pcReturned);
Ilyenkor a függvény visszatérési értéke hamis.
A következő körben már le tudjuk kérdezni a szükséges adatokat.
PortInfo2:=AllocMem(pcbNeeded);
Win32Check(EnumPorts(Nil,2,PortInfo2,pcbNeeded,pcbNeeded,pcReturned));
A pcReturned változóba bekerül a lekérdezett portok száma, így az eredményt egy for ciklus segítségével feldolgozhatjuk.