Autor Beitrag
PDA1942
Hält's aus hier
Beiträge: 12


D7 Prof
BeitragVerfasst: Do 11.09.03 21:17 
Schönen guten Abend.

Ich habe ein Problem mit der API Funktion NetServerGetInfo. Ich habe die so eingebunden
ausblenden Delphi-Quelltext
1:
2:
3:
function NetServerGetInfo(Server: PWideChar; Level: DWord; var
BufPtr:Pointer):
LongInt; stdcallexternal 'netapi32.dll';

jetzt bekomme ich in BufPtr unter anderem den Typ des Server.
ausblenden 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; { DAS HIER MEINE ICH }
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.
ausblenden 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 user profile iconTino: Delphi-Tags hinzugefügt.
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 12


D7 Prof
BeitragVerfasst: 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ß