Entwickler-Ecke
Windows API - NetServerGetInfo - Rückgabewerte
PDA1942 - Do 11.09.03 21:17
Titel: NetServerGetInfo - Rückgabewerte
Schönen guten Abend.
Ich habe ein Problem mit der API Funktion NetServerGetInfo. Ich habe die so eingebunden
Delphi-Quelltext
1: 2: 3:
| function NetServerGetInfo(Server: PWideChar; Level: DWord; var BufPtr:Pointer): LongInt; stdcall; external 'netapi32.dll'; |
jetzt bekomme ich in BufPtr unter anderem den Typ des Server.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type SERVER_INFO_101 = record sv101_platform_id : Integer; sv101_name : PWideChar; sv101_version_major : Integer; sv101_version_minor : Integer; sv101_type : Integer; sv101_comment : PWideChar; end; |
Nur leider kann ich mit diesem Integer nichts anfangen. Ich habe mir die Rückgabewerte mal aus diversen Seiten zusammengesucht, jedoch bekomme ich komplett andere Werte zurückgeliefert. Soetwas soll da rauskommen, aber ich bekommen zb $00071003 bei meiner Win2k Workstation zurück. Wie bekomme ich den Wert korrekt "übersetzt"?
Danke im vorraus und schönen Abend noch.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| SV_TYPE_WORKSTATION = $00000001; SV_TYPE_SERVER = $00000002; SV_TYPE_SQLSERVER = $00000004; SV_TYPE_DOMAIN_CTRL = $00000008; SV_TYPE_DOMAIN_BAKCTRL = $00000010; SV_TYPE_TIME_SOURCE = $00000020; SV_TYPE_AFP = $00000040; SV_TYPE_NOVELL = $00000080; SV_TYPE_DOMAIN_MEMBER = $00000100; SV_TYPE_PRINTQ_SERVER = $00000200; SV_TYPE_DIALIN_SERVER = $00000400; SV_TYPE_XENIX_SERVER = $00000800; SV_TYPE_SERVER_UNIX = SV_TYPE_XENIX_SERVER; SV_TYPE_NT = $00001000; SV_TYPE_WFW = $00002000; SV_TYPE_SERVER_MFPN = $00004000; SV_TYPE_SERVER_NT = $00008000; SV_TYPE_POTENTIAL_BROWSER = $00010000; SV_TYPE_BACKUP_BROWSER = $00020000; SV_TYPE_MASTER_BROWSER = $00040000; SV_TYPE_DOMAIN_MASTER = $00080000; SV_TYPE_SERVER_OSF = $00100000; SV_TYPE_SERVER_VMS = $00200000; SV_TYPE_WINDOWS = $00400000; SV_TYPE_DFS = $00800000; SV_TYPE_ALTERNATE_XPORT = $20000000; SV_TYPE_LOCAL_LIST_ONLY = $40000000; SV_TYPE_DOMAIN_ENUM = $80000000; SV_TYPE_ALL = $FFFFFFFF; |
Moderiert von
Tino: Delphi-Tags hinzugefügt.
Anonymous - Do 11.09.03 21:48
sieht so aus als währen das die einzelnen bits eines 32 bit integer wertes.
am besten wandelst du den wert ins binäre format um. dann ist 1. Bit Workstation, 2. bit Server usw.
PDA1942 - Fr 12.09.03 17:03
Du meinst, dass das Ergebniss aus mehreren SV_Type Teilen besteht?
-> Wenn das so ist, dann ist mir ehrlichgesagt noch etwas unklar, wie ich das zurückberechne.
Nehmen wir an, ich bekomme $00051003 zurück.
Das in bin wäre:
1100000000001000101
Jetzt müsste mein System eine SV_TYPE_WORKSTATION (bin 1), eine SV_TYPE_DOMAIN_CTRL (bin 100) und so weiter sein...ist das richtig verstanden?
Falls ja, bekomme ich das zwar (mit sehr viel Aufwand) im Kopf hin, aber wie ich das zb. in eine Funktion bastel, ist mir echt unklar. (Geht das in die Richtung and or xor und so weiter?)
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!