Показать сообщение отдельно
Старый 16.01.2017, 07:41   #6
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

DaVilka,
Код:
  hCore:= GetModuleHandle('core.dll');
  L2MemAlloc:= GetProcAddress(hCore, '?GMalloc@@3PAVFMalloc@@A');
...

function L2MemoryAllocNetPacket: PNetworkPacket; register;
asm
  push NetPacket
  push $0C
  mov edx, L2MemAlloc
  mov ecx, [edx]
  mov eax, [ecx]
  mov edx, [eax]
  call edx
end;

function L2MemoryAllocNetCmd(len: integer): Pointer; register;
asm
  push NetCmd
  push len
  mov edx, L2MemAlloc
  mov ecx, [edx]
  mov edx, [ecx]
  mov eax, [edx]
  call eax
end;


procedure L2MemoryFreeNetPacket(pck: PNetworkPacket); stdcall;
asm
  lea     edi, pck
  mov     edx, L2MemAlloc
  mov     ecx, [edx]
  mov     eax, [ecx]
  mov     edx, [edi]
  mov     edx, [edx+8]
  push    edx
  mov     eax, [eax+8]
  call    eax
  mov     ecx, L2MemAlloc
  mov     ecx, [ecx]
  mov     eax, [edi]
  mov     edx, [ecx]
  push    eax
  mov     edx, [edx+8]
  call    edx
end;

...

var
  np: PNetworkPacket;
begin
  np:= L2MemoryAllocNetPacket;
  np.id:= pck[0];
  np.res:= 0;
  np.size:= len - 1;
  np.res2:= 0;
  np.id2:= -1;
  np.data:= L2MemoryAllocNetCmd(len - 1);
  Move(pck[1], np.data[0], len - 1);

  AddNetworkQueue(np);
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
За это сообщение supernewbie нажился спасибкой от: