Domanda

Stavo cercando di agganciare un custom recv() winsock2.0 metodo di un processo remoto, in modo che la mia funzione esegue invece di un nel processo, sono stato googling questo e l'ho trovato davvero un buon esempio, ma gli manca la descrizione

typedef (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = recv;

Ora la mia domanda è, che cosa significa questo, o non è questa una sorta di puntatore alla reale recv() funzione?

E poi l'altro pezzo di codice per la funzione personalizzata

int WINAPI Cus_Recv( SOCKET s, char *buf, int len, int flags ) 
{
    printf("Intercepted a packet");

    return WSAREC( s, buf, len, flags ); // <- What is this?
}

Scusate se queste domande veramente il suono di base, ho solo iniziato a studiare 2 o 3 settimane fa.Grazie.

È stato utile?

Soluzione

dove si può trovare un esempio ?

la prima linea, cerca di definire un nuovo tipo di WSAREC, che è un puntatore a una funzione con la stessa firma recv().purtroppo, è anche il tentativo di dichiarare una variabile di questo tipo per memorizzare l'indirizzo della recv() funzione.typedef è sbagliato, dal momento che la funzione viene a mancare un tipo di ritorno.in modo da non compilare in Visual Studio 2003.

si può avere più fortuna utilizzando:

int (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = &recv;

che dichiara solo una variabile di tipo "puntatore a funzione", che memorizza l'indirizzo della recv().

ora il secondo frammento è una funzione che ha la stessa firma del recv()funzione che stampa un messaggio, quindi chiama l'originale recv() attraverso la funzione di puntatore sopra dichiarato.

il codice qui solo viene illustrato come chiamare una funzione tramite un puntatore:non sostituire nulla nel processo corrente.

inoltre, io non sono sicuro che si può interferire con un altro processo e sostituire una funzione a vostro piacimento.sarebbe una grande minaccia per la sicurezza del sistema.ma perché l'hai fatto, in primo luogo ??

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top