AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit NetServerGetInfo

Ein Thema von Luckie · begonnen am 3. Jun 2005 · letzter Beitrag vom 3. Jun 2005
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Problem mit NetServerGetInfo

  Alt 3. Jun 2005, 12:13
Ich versuche mittels der API Funktion MSDN-Library durchsuchenNetServerGetInfo das Betriebssystem des remote Rechners zu ermitteln. Implementiert habe ich es so:

Delphi-Quellcode:
type
  TSERVER_INFO_101 = packed record
    sv101_platform_ID: DWORD;
    sv101_name: PWChar;
    sv101_version_major: DWORD;
    sv101_version_minor: DWORD;
    sv101_type: DWORD; // not yet defined here!
    sv101_comment: PWChar;
  end;
  PSERVER_INFO_101 = ^TSERVER_INFO_101;
(Die Konstanten für sv101_type habe ich noch nicht definiert, da ich sie erstmal nicht brauche.)
Delphi-Quellcode:
function NetServerGetInfo(const servername: PWChar; level: DWORD; bufptr:
  Pointer): NET_API_STATUS; stdcall;

// ...

function NetServerGetInfo; external netapi32lib name 'NetServerGetInfo';
Aufruf:
Delphi-Quellcode:
function GetRemoteOS(const Computer: WideString; var Version: string): DWORD;
var
  res: DWORD;
  s: string;
  si: Pointer;
  Major: DWORD;
  Minor: DWORD;
resourcestring
  rsUnknown = 'Betriebsystem unbekannt';
begin
  res := 0;
  si := nil;
  s := '';
  res := NetServerGetInfo(PWideChar(Computer), 101, si);
  if res = NERR_Success then
  begin
    Major := PSERVER_INFO_101(si)^.sv101_version_major;
    Minor := PSERVER_INFO_101(si)^.sv101_version_minor;
    if Major = 4 then
      s := 'Windows 95/98/ME'
    else if (Major = 4) and (Minor = 0) then
      s := 'Windows NT 4.0'
    else if (Major = 5) and (Minor = 0) then
      s := 'Windows 2000'
    else if (Major = 5) and (Minor = 1) then
      s := 'Windows XP'
    else if (Major = 5) and (Minor = 2) then
      s := 'Windows 2003 Server Family'
    else
      s := rsUnknown;
    Version := s;
  end;
  NetApiBufferFree(si);
  result := res;
end;
Das Problem: Ich bekomme eine Access Violation nach dem Aufruf der Funktion. NetServerGetInfo gibt übrigens 1241672 zurück.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem mit NetServerGetInfo

  Alt 3. Jun 2005, 12:43
Definiere mal
si: PSERVER_INFO_101; und aufruf mittels
res := NetServerGetInfo(PWideChar(Computer), 101, @si);
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Problem mit NetServerGetInfo

  Alt 3. Jun 2005, 12:45
Hallo Luckie,

du musst die Adresse der Zeiger-Variable übergeben, nicht den Inhalt.

res := NetServerGetInfo(PWideChar(Computer), 101, @si); Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Problem mit NetServerGetInfo

  Alt 3. Jun 2005, 12:47
Moin Luckie,

probier's mal so:

Code:
res := NetServerGetInfo(PWideChar(Computer), 101, [color=red][b]@[/b][/color]si);
Bei den LAN-Manager Funktionen wird, i.d.R., die Adresse des Bufferpointers erwartet, da die Funktion ja selber den Buffer reserviert, und somit in den Wert des Pointers setzen muss.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Problem mit NetServerGetInfo

  Alt 3. Jun 2005, 14:11
Zitat von marabu:
Hallo Luckie,

du musst die Adresse der Zeiger-Variable übergeben, nicht den Inhalt.

res := NetServerGetInfo(PWideChar(Computer), 101, @si); Freundliche Grüße vom marabu





Danke, das war es.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz