A munkaállomások megosztásait a NETAPI32.DLL állományban implementált NetShareEnum metódus képes lekérdezni. A megoldás taglalása előtt megemlítendő, hogy amennyiben a mellékletalkalmazást Windows 98 rendszeren futtatjuk, akkor ott nem található meg a NETAPI32.DLL állomány. Ott a SVRAPI.DLL dinamikusan szerkeszthető könyvtárra kell hivatkozni.
A metódus deklarációja a következő:

NetShareEnum
Osztály:
function NetShareEnum(
servername: PWideChar;
level: DWORD;
var buf: Pointer;
prefmaxlen: DWORD;
var entriesread: DWORD;
var totalentries: DWORD;
var resume_handle: DWORD
): NET_API_STATUS;
A metódussal tehát információ szerezhető a hálózat megosztásairól.
Paraméterek
servername: PWideChar
A lekérdezendő számítógép neve. Windows NT esetében a nevet a „\\” karakterlánccal kell kezdeni.
level: DWORD
Az információ típusát jelzendő, meg kell adnunk egy egész számot. A szám a harmadik paraméterben megadott pointer által jelzett memóriaterületen található adatstruktúra típusát jelzi.
var buf: Pointer
Az eredményadatok területére mutató pointer.
prefmaxlen: DWORD
A lefoglalandó maximális memóriaterület nagysága bájtban.
var entriesread: DWORD
A lekérdezett megosztott erőforrások száma.
var totalentries: DWORD
A lehetséges erőforrásszám.
var resume_handle: DWORD
A lekérdezéskor nullára választandó változó, mely mindig a következő lekérdezéshez szükséges kezelőt tartalmazza.
Visszatérési érték
Sikeres lekérdezéskor nulla.
A második paraméterben megadható egész szám ötféle lehet, melyekhez öt struktúratípus tartozik.
| Szám |
Rekordtípus |
| 0 |
SHARE_INFO_0 |
| 1 |
SHARE_INFO_1 |
| 2 |
SHARE_INFO_2 |
| 50 |
SHARE_INFO_50 |
| 502 |
SHARE_INFO_502 |
Megjegyzendő, hogy csak az utolsó kettő típus használható Windows 9x rendszerek esetében.
A szövegmezőben a lekérdezendő erőforrásgazda számítógép nevét kell megadni, vagy üres karakterláncot a saját rendszerre vonatkozó információk lekérdezéséhez. Az egyes erőforrásokra vonatkozó adatokat a NetShareGetInfo metódussal kaphatjuk meg.
A megoldáshoz a SHARE_INFO_0 és a SHARE_INFO_1 típusokat használjuk fel. A lekérdezéskor először a SHARE_INFO_0 rekordban kapjuk meg az eredményt, vagyis 0 értéket adtunk át a metódusnak második paraméterként. A rekord deklarációjából látható, hogy itt csak az erőforrás nevét kapjuk meg.
PShare_Info_0 = ^TShare_Info_0;
TShare_Info_0 = record
shi0_netname: PWideChar;
end;
A lekérdezés kódja a következő:
result := NetShareEnum(Server, 0, Pointer(Buffer), DWORD(-1), entries, totals, r);
Ha a lekérdezés sikeres, akkor a lekérdezett erőforrások nevét megjelenítjük a Form TListBox komponensében.
if (result = NERR_Success) then begin
share := Buffer;
for i := 1 to entries do begin
listBox1.Items.Add('Megosztás neve: '+ string(share.shi0_netname));
Ezt követően hívjuk meg NetShareGetInfo metódust, az 1-et megadva paraméterként. Ekkor a SHARE_INFO_1 típusú rekordban kaphatjuk meg az erőforrás többi adatát.
result := NetShareGetInfo(server, share.shi0_netname, 1, Pointer(Buf1));
if (result = NERR_Success) then begin
listBox1.Items.Add('Jellemző: ' + string(Buf1.shi1_remark));
listBox1.Items.Add('');
end;
...
A műveletek végén felszabadítjuk az erőforrások adataira mutató pointert.
NetApiBufferFree(Buffer);