Moin ihr Lieben,
ich habe in einem Programm die send() Funktion gehookt da ich die Parameter so verändern möchte, dass ich noch eine Nachricht hinterher schicken kann.
Die Nachricht muss ein bestimmtes Format haben das ich mir zusammenbastel
Delphi-Quellcode:
function callbackSend( s: TSocket; var buf; len: Integer; flags: Integer ): Integer; StdCall;
var
Str: AnsiString;
Header: Byte;
I: Integer;
begin
Header := PByte(Cardinal(@pchar(buf)) + 1)^;
if (Header = $04) then
begin
str := '48414c4c4f'; // HALLO
str := 'f728' + IntToHex((length(str)+18) div 2, 2) + '0001ff0110' + str + '00'; // Nachrichtformat bauen
len := len + (Length(str) div 2); // neue Länge festlegen
for I := len - (Length(str) div 2) to len div 2 do // jedes Byte in den Buffer schreiben
PByte(Cardinal(@pchar(buf)) + I)^ := StrToInt('$' + str[I*2+1] + str[I*2+2]);
Result := newSend(s, buf, len, flags);
end else
Result := newSend(s, buf, len, flags);
end;
Irgendwie kommen wenn ich das so mache keine anderen Pakete mehr durch, und das kommt gar nicht erst an
Warum?
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.