где вы нашли такой пример?
первая строка пытается определить новый тип WSAREC, который является указателем на функцию, имеющую ту же сигнатуру, что и recv()
. к сожалению, он также пытается объявить переменную этого типа для хранения адреса функции recv()
. typedef неверен, так как функции не хватает возвращаемого типа. поэтому он не компилируется в Visual Studio 2003.
вам может повезти больше, используя:
int (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = &recv;
, который объявляет только переменную типа «указатель на функцию», которая хранит адрес recv()
.
теперь второй фрагмент - это функция, которая имеет ту же сигнатуру, что и функция recv()
, которая печатает сообщение и затем вызывает исходный recv()
через указатель функции, объявленный выше.
код здесь только показывает, как вызывать функцию через указатель: она ничего не заменяет в текущем процессе.
также я не уверен, что вы можете вмешиваться в другой процесс и заменить одну функцию по вашему желанию. это было бы большой угрозой для безопасности системы. но зачем ты это делаешь в первую очередь ??