HyperLink


Bejelentkezés
E-mail: 
Jelszó: 






Skip Navigation Links
 

A LAN adott típusú objektumainak lekérdezése


Példaprogram letöltése

4180 bájt

A Windows NT 4-es verziójától kezdődően rendelkezésünkre áll egy dinamikus könyvtár, a Netapi32.dll, mely számtalan hasznos függvényt tartalmaz egyrészt ahhoz, hogy a lokális számítógépről információkat kérdezzünk le, illetve jellemzőket állítsunk be, másrészt hogy a helyi hálózat számítógépeiről kapjunk hasznos adatokat. Cikkünkben az utóbbi függvénycsoport egyik tagját használjuk fel arra, hogy lekérdezést futtassunk arra vonatkozóan, milyen SQL Server példányok, illetve milyen nevű munkaállomások találhatók a helyi hálózatban.

A Netapi32.dll állomány NetServerEnum metódusát használjuk fel a cél elérése érdekében. A metódus deklarációja a következő:
NetServerEnum
function NetServerEnum(
const ServerName: PWideString; level: DWORD; var Buffer: pointer; PrefMaxLen: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD; ServerType:DWORD; const Domain: PWideChar; var ResumeHandle: DWORD
): DWORD;
A metódus alapvető funkciója, hogy a megadott kritériumoknak megfelelő objektumokat kérdezi le a helyi hálózat számítógépeiről. Megtehetjük, hogy a munkaállomások neveit, a telepített SQL Server példányokat vagy a Novell rendszereket gyűjtjük össze és listázzuk ki.
Paraméterek
const ServerName: PWideString
Fenntartva, értéke NIL kell, hogy legyen.
level: DWORD
A megadott kritériumoknak megfelelő rendszerekről kétféle adatstruktúrában kaphatunk információkat. Itt egy egész számmal kell megadnunk, hogy melyik típust kívánjuk a metódushíváskor használni. Értékei lehetnek:
  • 100: a SERVER_INFO_100 típust használjuk
  • 101: a SERVER_INFO_101 típust használjuk
var Buffer: pointer
A kapott információt tartalmazó memóriaterületre mutató pointer.
PrefMaxLen: DWORD
A kapott információ maximális mérete bájtban. A függvény ezt a memóriaterületet foglalja le a memóriában a kapott információ számára.
var EntriesRead: DWORD
A lekérdezett elemek aktuális száma.
var TotalEntries: DWORD
A lekérdezhető maximális elemszám.
ServerType:DWORD
Itt adhatjuk meg, hogy milyen szerver- vagy szoftvertípussal rendelkező számítógépet keressen a függvény.
const Domain: PWideChar
A domain neve, melybe a hálózat számítógépei tartoznak. NULL esetén az elsődleges domain kerül átvizsgálásra.
var ResumeHandle: DWORD
Nem használt érték, nulla értéket kell megadnunk.
Visszatérési érték
Sikeres metódushívás esetén nulla.
A kapott információra tehát egy pointer mutat. A pointer-t értelmezve meghatározzuk, hogy hány darab objektummal kapcsolatban kaptunk információkat. Minden információ egy-egy rekordban lesz megtalálható. Ez a rekord a SERVER_INFO_101 típus megfelelője, melynek deklarációja a következő:
TServerInfo101 = record
  platform_id: DWORD;
  name: PWideChar;
  version_major: DWORD;
  version_minor: DWORD;
  server_type: DWORD;
  comment: PWideChar;
end;
PServerInfo101 = ^TServerInfo101;
A mellékelt példában két típust tudunk kiválasztani, melyekre a keresést futtatjuk. Az egyik lehetőség, hogy a LAN gépeire telepített SQL Server példányokat listázzuk ki, míg a másik lehetőség, hogy az összes munkaállomás nevét lekérdezzük. Ekkor határozzuk meg a szervertípus konstansát.
if comboBox1.ItemIndex = 0 then
  t := SV_TYPE_SQLSERVER
else
  t := SV_TYPE_WORKSTATION;
A konstansok meghatározása után meghívjuk a NetServerEnum metódust.
res := NetServerEnum(nil, 101, Buffer, MAX_PREFERRED_LENGTH, entries, totals, t, nil, r);
Ha a hívás sikeres volt, vagyis a visszatérési érték nulla, akkor egy ciklussal végigmegyünk az összes kapott elemen, és a rekord NAME mezőjéből kiolvassuk a kiszolgáló nevét.
for i := 1 to entries do begin
  listBox1.Items.Add('Kiszolgáló neve: ' + si^.name);
  Inc(si);
end;
A művelet végén a NetApiBufferFree metódussal felszabadítjuk a pointer által lefoglalt memóriaterületet.
NetApiBufferFree(Buffer);
A metódusnak a megfelelő konstanst átadva számtalan típust lekérdezhetünk. Ezek lehetnek:
  • Első- és másodlagos domain-vezérlők.
  • Terminálszerverek.
  • Windows 9x családba tartozó operációs rendszereket futtató gépek.
  • NetWARE rendszereket futtató gépek.
  • NT rendszereket futtató gépek.
  • Fájl- és nyomtatószervereket futtató gépek.
  • Apple rendszereket futtató gépek.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 763. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2010 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |