Récupération nombre de processeurs
Stagiaire WDF
Inscrit:
16/03/2006 19:30
Post(s): 27
Bonjour à tous,

Mon problème vient du fait que je n'arrive pas à retrouver le nombre de processeur.

Pour cela , j'utilise l'API NtQuerySystemInformation référencée dans NTDLL.DLL.

Voici la fonction à employer en C :

typedef struct _SYSTEM_BASIC_INFORMATION {
    BYTE Reserved1[24];
    PVOID Reserved2[4];
    CCHAR NumberProcessors;
} SYSTEM_BASIC_INFORMATION;

DWORD dwNumberOfProcessors;

NtQuerySystemInformation(SystemBasicInformation, &SysBaseInfo, sizeof(SysBaseInfo), NULL);

// Retourne le nombre de processeur
dwNumberOfProcessors = SysBaseInfo.NumberProcessors;


Et voici la conversion en windev

_SYSTEM_BASIC_INFORMATION est une structure
	Reserved1 est une chaîne fixe sur 24
	Reserved2 est un entier sur 4 octets
	NumberProcessors est un caractère
FIN

SysBaseInfo est un _SYSTEM_BASIC_INFORMATION

dwNumberOfProcessors est un entier

status=API("ntdll","NtQuerySystemInformation",0, &SysBaseInfo, Dimension(SysBaseInfo), Null);

// Retourne le nombre de processeur
dwNumberOfProcessors  = SysBaseInfo:NumberProcessors


Le seul problème est que SysBaseInfo:NumberProcessors me retourne toujours 0. Donc la y a un hic

Si vous avez une idée ou meme un composant qui récupère des informations systèmes, je suis preneur

Bonne journée

Contribution le : 27/06/2006 10:25

Edité par drcharly93 sur 29/6/2006 2:51:05
Créer un fichier PDF de la contribution Imprimer


Re: Récupération nombre de processeurs
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Un PVOID Reserved2[4] est un tableau de 4 PVOID (Pointeurs donc 4 octets). En changeant Reserved2 est un entier sur 4 octets par Reserved2 est une chaine fixe sur 16 octets (4 x 4) cela devrait mieux marcher.

Bon dév.,

Totof

Contribution le : 27/06/2006 15:33
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


Re: Récupération nombre de processeurs
Stagiaire WDF
Inscrit:
16/03/2006 19:30
Post(s): 27
En fait j'ai trouvé sur un site chinois une autre déclaration en C de cette structure, ce qui revient en windev à ceci:

_SYSTEM_BASIC_INFORMATION est une structure
	Unknown 		est un entier
	MaximumIncrement	est un entier
	PhysicalPageSize	est un entier
	NumberOfPhysicalPages  	est un entier
	LowestPhysicalPage  	est un entier
	HighestPhysicalPage 	est un entier
	AllocationGranularity  	est un entier
	LowestUserAddress 	est un entier
	HighestUserAddress  	est un entier
	ActiveProcessors  	est un entier
	NumberProcessors  	est un entier
FIN


Et miracle, l'API fonctionne très bien. Pourtant ce n'est pas ce qui est écrit dans la msdn. Si quelqu'un a une explication.

Bonne soirée

Contribution le : 27/06/2006 18:22
Créer un fichier PDF de la contribution Imprimer


Re: Récupération nombre de processeurs
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Citation :

Unknown est un entier
MaximumIncrement est un entier
PhysicalPageSize est un entier
NumberOfPhysicalPages est un entier
LowestPhysicalPage est un entier
HighestPhysicalPage est un entier


Cela représente 6 x 4 octets = 24 octets.

Citation :

HighestPhysicalPage est un entier
AllocationGranularity est un entier
LowestUserAddress est un entier
HighestUserAddress est un entier


Cela représente 4 x 4 octets = 16 octets.

Donc cela fait bien 24 octets pour réserved 1 et 16 octets pour réserved 2.

Pour résumer, même si l'on ne peut pas directement consulter les informations contenus dans reserved 1 et reserved 2, on peut récupérer le nombre de processeur du moment que l'on respecte la taille de la structure en mémoire.

Bon dév.,

Totof

Contribution le : 28/06/2006 09:28
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2