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 Funktion
bleibt 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 Startzeitpunkt
funktioniert)
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?