![]() |
Problem mit NetServerGetInfo
Ich versuche mittels der API Funktion
![]()
Delphi-Quellcode:
(Die Konstanten für sv101_type habe ich noch nicht definiert, da ich sie erstmal nicht brauche.)
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;
Delphi-Quellcode:
Aufruf:
function NetServerGetInfo(const servername: PWChar; level: DWORD; bufptr:
Pointer): NET_API_STATUS; stdcall; // ... function NetServerGetInfo; external netapi32lib name 'NetServerGetInfo';
Delphi-Quellcode:
Das Problem: Ich bekomme eine Access Violation nach dem Aufruf der Funktion. NetServerGetInfo gibt übrigens 1241672 zurück. :gruebel:
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; |
Re: Problem mit NetServerGetInfo
Definiere mal
Delphi-Quellcode:
und aufruf mittels
si: PSERVER_INFO_101;
Delphi-Quellcode:
res := NetServerGetInfo(PWideChar(Computer), 101, @si);
|
Re: Problem mit NetServerGetInfo
Hallo Luckie,
du musst die Adresse der Zeiger-Variable übergeben, nicht den Inhalt.
Delphi-Quellcode:
Freundliche Grüße vom marabu
res := NetServerGetInfo(PWideChar(Computer), 101, @si);
|
Re: Problem mit NetServerGetInfo
Moin Luckie,
probier's mal so:
Code:
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.
res := NetServerGetInfo(PWideChar(Computer), 101, [color=red][b]@[/b][/color]si);
|
Re: Problem mit NetServerGetInfo
Zitat:
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: Danke, das war es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz