ПолезностиИсключительно для полезных тем из других разделов. Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.
которая собсно всего лишь прослойка к полноценной функции UNetworkHandler_AddNetworkQueue_New:
delphi Код:
procedure UNetworkHandler_AddNetworkQueue_New(unh: Integer; np: PNetworkPacket); stdcall;
begin// тут код для логирования того что пришло в функцию// сохраняем указатель на объект UNetworkHandler
nh:=Pointer(unh);
// Вызываем клиентскую UNetworkHandler::AddNetworkQueue
UNetworkHandler_AddNetworkQueue_Call(np);
end;
ну просто для импорта достаточно засунуть в UNetworkHandler_AddNetworkQueue_Original указатель на UNetworkHandler::AddNetworkQueue и вызвать UNetworkHandler_AddNetworkQueue_Call, короче примерно так:
delphi Код:
var
nh: Pointer; // <-- в эту переменную надо засунуть указатель на объект UNetworkHandler
UNetworkHandler_AddNetworkQueue_Original: procedure(NetworkPacket: Pointer); stdcall;
procedure UNetworkHandler_AddNetworkQueue_Call(NetworkPacket: Pointer); stdcall;
asm
mov ecx, nh
mov esp, ebp
pop ebp
jmp [UNetworkHandler_AddNetworkQueue_Original]
end;
begin
UNetworkHandler_AddNetworkQueue_Original:=GetProcAddress('engine.dll','?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z');
// вызываем импортированную функцию
UNetworkHandler_AddNetworkQueue_Call(параметр);
end.
Добавлено через 4 минуты
UNetworkHandler_AddNetworkQueue_Hook и UNetworkHandler_AddNetworkQueue_Call прослойки нужные для того чтоб перейти от thiscall к stdcall соглашению
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 18.12.2009 в 00:35.
Причина: Добавлено сообщение
NetworkPacket: Pointer
А кто-то может поделится примерной структурой этого дела ?
Код:
PNetworkPacket = ^TNetworkPacket;
TNetworkPacket = packed record
id: byte; // ID пакета
res: byte; // тут ничего нужного нет
id2: Smallint; // второй ID если есть
size: Cardinal; // размер данных
data: Pointer; // указатель на данные
end;
Последний раз редактировалось brat, 21.01.2010 в 04:43.