Hé non, je ne suis pas dévellopeur chez Microsoft.
Et tout comme vous, je ne connais pas particulièrement les fonctions des DLL. Par contre si vous allez sur le site de Microsoft, normalement chaque fonction des principales DLL sont décrites, voir expliquées avec des exemples.
Techniquement parlant, une fonction intégrée à une DLL est en tout point identique à une fonction écrite pour AutoIt et intégrée à un UDF :
- Pour Autoit, vous devez inclure le fichier UDF, puis appeler la fonction avec ses paramètres.
- Pour une fonction de DLL, vous devez utiliser la commande dllCall, puis appeler la fonction avec ses différents paramètres.
Dans un cas comme dans l'autre, généralement la fonction vous retourne une valeur qui permet de savoir si l'opération s'est bien déroulée.
Pour la deuxième partie de votre question,
ReduceMemory et
_recupereIp() sont des fonctions qui n'ont strictement rien à voir l'une avec l'autre.
Pour ReduceMemory(), si le paramètre $i_Pid est à -1, c'est que la fonction est écrite en ce sens, pour éviter d'avoir à récupérer le PID du script en cours (-1 sous-entend qu'il faut utiliser le PID 'local'), car il est possible d'utiliser cette fonction, pour diminuer l'utilisation mémoire d'un autre script/programme.

En ce qui concerne la fonction
_recupereIp(), je n'ai pas besoin de lui rentrer un paramètre, puisque elle est écrite pour ne pas en utiliser !!!
DimVar a écrit :De plus, au moment où on controle si $i_Pid <> -1, on ne connait pas la valeur de $i_Pid... ?!?!?
Si vous regardez bien la fonction
ReduceMemory, elle est décomposée en deux choix :
1 - Si on a déterminer le PID (If $i_PID <> -1)
2 - Si la valeur de PID est -1 (Else)
- Si le PID est déterminé (cas N°1) alors la fonction récupère le handle du process correspondant au PID (Fonction OpenProcess de la DLL kernel32.dll), puis effectue la réduction de mémoire grace à l'appel de la fonction EmptyWorkingSet de la DLL psapi.dll et fini par la fermeture du handle (Fonction CloseHandle de la DLL kernel32.dll).
- Si le PID n'est pas fixé, alors la valeur par défaut est utilisée (-1) et donc on tombe dans le cas N°2. Ce qui utilise la même fonction et DLL que ci-dessus, mais sans avoir besoin de préciser le handle de l'application, car celui-ci est celui du script en cours ...

Voilà, voilà. Je pense qu'une grosse partie de vos interrogations devraient être à présent éclaircies.
