Bonjour,
J'ai voulu testé les codes donnés dans les pages suivantes du MSDN :
http://msdn.microsoft.com/en-us/library/ms682623.aspx
http://msdn.microsoft.com/en-us/library/ms682050.aspx
Problème : la fonction EnumProcesses provoque une erreur de segmentation.
J'ai fait un code minimaliste que je compile avec Codeblocks 10.5 (et donc MinGW) sous Windows XP :
Le Try Catch ne sert à rien puisque la sortie est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <windows.h> #include <psapi.h> #include <iostream> int main( void ) { // Get the list of process identifiers. DWORD aProcesses[10000] = {0}, cbNeeded = 0; try { if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) { return 1; } } catch(const std::exception & Exp) { std::cerr << "Erreur : " << Exp.what() << ".\n"; exit(EXIT_FAILURE); } return 0; }
Par acquis de conscience, je fais un code similaire en C :
qui ne m'affiche que Avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <windows.h> #include <psapi.h> #include <stdio.h> int main( void ) { // Get the list of process identifiers. DWORD aProcesses[10000] = {0}, cbNeeded = 0; puts("Avant"); if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) { puts("Erreur lors du listing !"); return 1; } puts("Apres"); return 0; }
J'enquête à partir de la page de manuel de la fonction EnumProcesses : http://msdn.microsoft.com/en-us/library/ms682629.aspx
Elle semble fonctionner sous XP, j'ai ajouté Psapi.lib à mon projet. Définir ou pas PSAPI_VERSION=1 ne change rien.
Je suis preneur de toute piste ! Merci d'avance !
Partager