Цитата:
Сообщение от destructor
у тебя маниакальная привычка все усложнять.
Добавлено через 1 минуту
потренеруйся на любой __stdcall функции с одним параметром
тут отличие только сохранить регистр ecx
потренироватся в чём?
Добавлено через 1 минуту
функция!!! возвращает integer
|
так всё ок:
delphi Код:
function AddNetworkQueue_hook(np:PNetworkPacket): integer; stdcall;
begin
asm
mov tmpPointer, ecx
end;
ParsingFromServer(np);
asm
push np;
mov ecx, tmpPointer
call [AddNetworkQueue_origAddr]
end;
end;
так всё не ок:
delphi Код:
function AddNetworkQueue_hook(np:PNetworkPacket): integer; stdcall;
var
s:string;
p:pointer;
b:byte;
begin
asm
mov tmpPointer, ecx
end;
try
s:=IntToHex(np.id,2)+' ';
if (np.size>0) and (np.size<6000) then
for i:=0 to np.size-1 do
begin
p:=Pointer(cardinal(np.data)+i);
b:=Byte(p^);
s:=s+IntToHex(b,2)+' ';
end;
writeLn('FromServer:'+s);
except
end;
asm
push np;
mov ecx, tmpPointer
call [AddNetworkQueue_origAddr]
end;
end;
но при этом проблема с критами всё равно осталась!