Question

Je suis en train de brancher une méthode winsock2.0 recv personnalisé () à un processus à distance, de sorte que ma fonction exécute au lieu de celui dans le processus, j'ai été googler cela et je l'ai trouvé quelques très bon exemple, mais ils Description absence

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

Maintenant, ma question est, qu'est-ce que cela signifie, ou fait, est-ce une sorte d'un pointeur vers la fonction réelle recv ()?

Et puis l'autre morceau de code pour la fonction personnalisée

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?
}

Désolé si ces questions sonnent vraiment de base, je ne ai commencé à apprendre il y a 2 ou 3 semaines. Merci.

Était-ce utile?

La solution

où avez-vous trouvé un tel exemple?

la première ligne tente de définir une nouvelle WSAREC de type, qui est un pointeur vers une fonction ayant la même signature que recv(). malheureusement, il essaie aussi de déclarer une variable de ce type pour stocker l'adresse de la fonction recv(). le typedef est erroné puisque la fonction manque d'un type de retour. il ne compile pas sous Visual Studio 2003.

vous pouvez avoir plus de chance en utilisant:

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

qui déclare qu'une variable de type « pointeur de fonction », qui stocke l'adresse du recv().

maintenant le deuxième extrait est une fonction qui a la même signature que le recv()function, qui imprime un message, puis appelle la recv() d'origine via le pointeur de fonction déclarée ci-dessus.

le code ici ne montre comment appeler une fonction par un pointeur: il ne remplace rien dans le processus en cours.

aussi, je ne suis pas sûr que vous pouvez interférer avec un autre processus et de remplacer une fonction à votre volonté. ce serait une grande menace pour la sécurité du système. mais pourquoi voulez-vous faire en premier lieu ??

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top