ПолезностиИсключительно для полезных тем из других разделов. Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.
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.
Теперь другая проблема. Менеджмент памяти в чужом процессе...
reallocmemory при изменении размера данных пакета очевидно не выход...
Если выделять память самостоятельно, то интересно по завершению обработки пакета в дебрях л2 уже выделенный линейкой блок будет освобождаться , или мной созданный. В первом случае - утечка памяти, во втором - как мне освобождать созданные блоки, по таймеру что ли, или по следующему вызову функции скорее всего...
Или все-таки с reallocmemory прокатит...
зы: это все про хук на UNetworkHandler_AddNetworkQueue
Последний раз редактировалось Cooper85, 22.01.2010 в 04:23.
Cooper85, у меня не вышло заставить UNetworkHandler_AddNetworkQueue принимать мои пакеты, как я только не выделял память - клиент вылетает с критом при попытке вызвать эту функцию...
ЗЫ хотя возможно эт из за того что я её вызывал в отдельном потоке, лень мне было пробовать вызвать её в еёном потоке)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Там как я понял, свой менеджер памяти (и не один наверно) в виде класса FMallocWindows(FMalloc). Причем один экземляр FMalloc объявлен в экспорте Core.dll. Наверно тот который инициализируется вместе с AppInit(..).
Теперь интересует все про представление сишных классов в памяти... В частности, как получить указатель на метод класса, имея указатель на экземпляр в памяти.