Bonjour,
Je voudrais savoir le sens de:
void *in et de void **out? dans l'instruction suivante:
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part int IOCTL(call_t *c, int option, void *in, void **out);
Bonjour,
Je voudrais savoir le sens de:
void *in et de void **out? dans l'instruction suivante:
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part int IOCTL(call_t *c, int option, void *in, void **out);
Bonsoir,
- in est un pointeur vers des données au format indéfini (void) ;
- out est un pointeur vers un pointeur vers des données au format indéfini (void) ;
L'idée est que, d'une part, comme tu ne connais pas à l'avance le format des données que tu vas transmettre ou recevoir de ta fonction, tu ne pourras le faire que de manière indirecte en passant l'adresse de ces données, adresse qui, elle, a toujours le même format quelque soit ce que l'on y trouve.
Ensuite, tu vas passer ce pointeur à ta fonction en entrée pour qu'elle puisse aller chercher les données, puis elle va t'en retourner un autre en fin de traitement pour que, toi, tu puisses aller lire les données modifiées. Il faut donc que tu lui passes l'adresse d'un pointeur « void * » pour qu'elle puisse le remplir. Concrètement, à l'usage, ça va donner quelque chose ressemblant à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int x = 10; /* Donnée à transmettre */ void * p_entree = &x; /* Adresse de la donnée à lire (la variable x) */ void * p_sortie = NULL; /* Pointeur recevant en retour l'adresse des données renvoyées par la fonction */ ioctl (CODE_DE_L_APPEL,option,p_entree,&p_sortie);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager