C# - Hasznos hálózati információkat szolgáltató metódusok

Hálózati meghajtó-műveletek metódusai 3. rész

forráskód letöltése
Cikksorozatunknak ebben a számában olyan metódusok menedzselt deklarációit, és használatát ismerhetjük meg, melyek egy adott megosztással kapcsolatban szolgáltatnak információkat. A metódusok egyikével lekérdezhetjük egy tetszőleges megosztás eredeti elérési útvonalát. Egy másik metódus segítségével megtudhatjuk, hogy ki az aktuálisan bejelentkezett felhasználó, és a harmadikkal megismerhetjük, hogy egy meghajtó betűjelhez milyen megosztás tartozik.
A mellékelt példában elsőként létre kell hozni egy megosztást a számítógépen a megadott útvonalhoz, a megadott meghajtó betűjellel, a sorozat első számában megismert metódusokkal és módszerrel. Ehhez a CSATLAKOZTATÁS gombra kell kattintanunk.
Ezt követően kérdezhetünk le adatokat a megosztással kapcsolatban. A művelet elvégzésének feltétele, hogy a számítógép egy lokális hálózat része legyen. Lássuk a metódusok deklarációit sorban.
WNetGetConnection metódus
WNetGetConnection
int WNetGetConnection(
string LocalName, StringBuilder RemoteName, ref int Length
);
A metódussal kérdezhetjük le az adott meghajtó betűjelhez tartozó megosztást (feltéve, hogy az adott meghajtó betűjelhez tartozik ilyen).
Paraméterek
string LocalName
A meghajtó betűjele.
StringBuilder RemoteName
Az objektum tartalmazza majd az eredmény karakterláncot.
ref int Length
A kapott karakterlánc mérete, vagyis a metódus hívásakor megadjuk a befogadó objektum kapacitását, majd a hívás után lekérdezhetjük a lefoglalt területet.
Visszatérési érték
Amennyiben a hívás sikeres volt, akkor a visszatérési érték nulla.
A mellékelt példában a MEGOSZTÁS INFO feliratú nyomógombra kattintva kaphatjuk meg a megadott betűjelhez kapcsolódó megosztás elérési útvonalát.
Ehhez létrehozunk egy StringBuilder objektumot, majd egy változót a mérethez.
StringBuilder sb = new StringBuilder(2000);
int size = sb.Capacity;
A metódus hívása a következő lépés. Az eredményt a StringBuilder objektum fogja tartalmazni.
res = Win32.WNetGetConnection(textBox2.Text, sb, ref size);
...
WNetGetUniversalName metódus
WNetGetUniversalName
int WNetGetUniversalName(
string Path, int InfoLevel, IntPtr lpBuffer, ref int Length
);
A metódus segítségével megtudhatjuk, hogy a helyi elérési útvonalon található erőforrás milyen elérési útvonalon található a hálózat adott számítógépén.
Paraméterek
string Path
A helyi erőforrás elérési útvonala. A P: meghajtóra mapp-elt sample.doc állomány lokális elérési útvonala például P:\\sample.doc.
int InfoLevel
A megadott értéktől függ, hogy milyen típusú adathalmazban találjuk meg a kapott karakterláncot. Amennyiben a konstans értéke UNIVERSAL_NAME_INFO_LEVEL, akkor a kimeneti struktúra UNIVERSAL_NAME_INFO típusú, míg ha a REMOTE_NAME_INFO_LEVEL konstanst használjuk, akkor a kapott adatokat a REMOTE_NAME_INFO típusú struktúrában találhatjuk meg.
IntPtr lpBuffer
Egy mutató, mely a kapott struktúra kezdőcímére mutat.
ref int Length
A memóriában (Heap-en) lefoglalt terület mérete.
Visszatérési érték
Sikeres végrehajtás esetén nulla.
A példában meg kell adnunk egy lokális elérési útvonalat, majd a LEKÉRDEZÉS gombbal kaphatjuk meg az univerzális nevet.
Ehhez szükség van egy mutatóra, majd arra, hogy a memóriában lefoglaljunk egy 1024 bájt méretű területet.
IntPtr ptr = IntPtr.Zero;
int size = 1024;
ptr = Marshal.AllocHGlobal(size);
Meghívjuk a metódust a mutatóval.
res = Win32.WNetGetUniversalName(textBox3.Text, Win32.REMOTE_NAME_INFO_LEVEL, ptr, ref size);
Majd a REMOTE_NAME_INFO struktúrába írjuk a kapott információt.
Win32.REMOTE_NAME_INFO info = new Win32.REMOTE_NAME_INFO();
info = (Win32.REMOTE_NAME_INFO)Marshal.PtrToStructure(ptr,typeof(Win32.REMOTE_NAME_INFO));
A struktúra lpUniversalName nevű mezője tartalmazza a nevet.
WNetGetUser metódus
WNetGetUser
int WNetGetUser(
string DeviceName, StringBuilder Username, ref int Length
);
A metódussal kaphatjuk meg a hálózati kapcsolathoz tartozó alapértelmezett felhasználó nevét.
Paraméterek
string DeviceName
A megosztott erőforrás helyi meghajtója.
StringBuilder Username
A felhasználó nevét a metódushívás után tartalmazó objektum.
ref int Length
A kapott karakterlánc mérete.
Visszatérési érték
Sikeres művelet végrehajtás esetén nulla.
A példában a FELHASZNÁLÓ feliratú nyomógombra kattintva kapható meg a kért információ, amennyiben megadtuk a meghajtó betűjelét.
A hívás a következőképpen történik:
StringBuilder sb = new StringBuilder(2000);
int size = sb.Capacity;
res = Win32.WNetGetUser(textBox2.Text, sb, ref size);

Hálózati meghajtó-műveletek metódusai cikksorozat

Hasznos hálózati információkat szolgáltató metódusok - Hálózati meghajtó-műveletek metódusai 3. rész