Einzelnen Beitrag anzeigen

magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#1

Problem beim Laden einer DLL zur Laufzeit

  Alt 4. Jun 2003, 10:26
Hallöchen!
Ich hab ein "kleines" Problem mit dem Laden einer DLL.

mal direkt meine codes:

gleichbleibende Deklarationen:
Code:
const
  RAS_MaxDeviceType = 16;
  RAS_MaxEntryName = 256;
  RAS_MaxDeviceName = 128;
type
{$IFNDEF UNICODE}
    TCHAR = type Char;
  {$ELSE}
    TCHAR = type WideChar;
  {$ENDIF}
  RAS_STATS = packed record
   dwSize               : DWORD;
   dwBytesXmited        : DWORD;
   dwBytesRcved         : DWORD;
   dwFramesXmited       : DWORD;
   dwFramesRcved        : DWORD;
   dwCrcErr             : DWORD;
   dwTimeoutErr         : DWORD;
   dwAlignmentErr       : DWORD;
   dwHardwareOverrunErr : DWORD;
   dwFramingErr         : DWORD;
   dwBufferOverrunErr   : DWORD;
   dwCompressionRatioIn : DWORD;
   dwCompressionRatioOut : DWORD;
   dwBps                : DWORD;
   dwConnectDuration    : DWORD;
  end;

 PRasConnA = ^PRasConn;
 PRasConnW = ^PRasConn;
 PRasConn = record
    dwSize      : DWORD;
    hrasconn    : DWORD;
    szEntryName : array [0..RAS_MaxEntryName] of Char;
    szDeviceType : array [0..RAS_MaxDeviceType] of Char;
    szDeviceName : array [0..RAS_MaxDeviceName] of Char;
 end;
Die eigentliche Funktionbleibt gleich)
Code:
Procedure GetSystemParams;
var Res,lpcb,NumberOfEntries :DWORD;
    Entries                 :array[0..255] of PRasConn;
    mystats                 :RAS_STATS;
    i                       :DWORD;
    bytesdown,bytesup       :Cardinal;
begin
 Entries[0].dwsize:=412;
 lpcb:=256*Entries[0].dwsize;
 NumberOfEntries:=0;
 Res := RasEnumConnections(Entries[0], lpcb, NumberOfEntries);
 mystats.dwsize:=sizeof(mystats);
 bytesup:=0;
 bytesdown:=0;
 for i:=0 to NumberOfEntries-1 do begin
    Res:= RasGetConnectionStatistics(Entries[i].hrasconn,mystats);
    bytesdown:=bytesdown+mystats.dwBytesRcved;
    bytesup:=bytesup+mystats.dwBytesXmited;
 end;
end;
Laden zum Startzeitpunktfunktioniert)
Code:
function RasEnumConnections(var lprasconn : PRasConn; var lpcb : DWORD; var lpcconnections : DWORD) : DWORD; stdcall; external 'RasApi32.dll' name 'RasEnumConnectionsA';
function RasGetConnectionStatistics(const hRasConn : DWORD;const lpStatistics : RAS_STATS) : DWORD; stdcall; external 'RasApi32.dll';
Laden zur Laufzeit (erste Funktion): (funktioniert nicht)
Code:
function RasEnumConnections(var lprasconn : PRasConn; var lpcb : DWORD; var lpcconnections : DWORD) : DWORD;
 var REC:TREC;
     Handle:THandle;
 begin
     Handle:=LoadLibrary('RasApi32.dll');
     if handle<>0 then begin
         @REC:= GetProcAddress(Handle,'RasEnumConnectionsA');
         if @REC<>nil then begin
             result:=REC(lprasconn,lpcb,lpcconnections);
         end;
         freeLibrary(Handle);
     end;
 end;
Mein Problem sind nun die Parameter, da diese ja ausgefüllt zurückgegeben werden müßten. Dies geschiet aber nicht!

Wäre super wenn jemand wüßte wie man dies erreichen kann?
  Mit Zitat antworten Zitat