Lire les structures smbios/dmi (informations sur le bios, la mémoire,....)

Soyez le premier à donner votre avis sur cette source.

Vue 20 624 fois - Téléchargée 2 091 fois

Description

Ce code permet d'avoir acces au infos SMBIOS résidentes en mémoire sous XP/2000/NT. On trouve des infos sur la carte mère, le processeur, la mémoire, les slots, les ports...

Ce code n'a été testé que sous XP Home mais doit fonctionner sur XP/2000/NT
D'après MSDN et le fonctionnement des .sys, ce code ne doit pas fonctionner sous 9x/ME.

Je vois déjà des programmeurs qui vont dire "WMI fait déjà tout ca". Oui effectivement, WMI renvoie en grande partie les memes infos mais ce code permet de se passer de WMI... ca peut servir...

Pour ce qui est du fonctionnement : le programme principale accède à une dll qui gère en pilote en mode kernel pour lire la mémoire physique où les structures se trouvent. (pour ceux qui veulent le code de la dll et du .sys, il seront bientot sur CPPFrance)

La dll exporte 2 fonctions :
'déclaration en VB.Net
'renvoie des infos sur DMI
'pBuffer renvoie à une structure TableEntryPoint contenant des infos à passer à GetDMITableStructure
'nBufferLenght : taille de pBuffer
Declare Function GetDMIInfos Lib "SMBIOSdll.dll" (ByRef pBuffer As TableEntryPoint, ByVal nBufferLenght As Integer) As Integer
'renvoie un tableau d'octets correspondant à une structure du type spécifié dans pStruc
'pStruc doit contenir les parametres comme le type ou le numéro de la structure à chercher
'pBuffer renvoie à un tableau d'octets contenat la structure recherchée
'nBufferLenght : taille de pBuffer
Declare Function GetDMITableStructure Lib "SMBIOSdll.dll" Alias "GetDMITableStructure" (ByRef pStruc As StrucTableHeader, ByRef pBuffer As Byte, ByVal nBufferLenght As Integer) As Integer

ou
'VB 6.0
Declare Function GetDMIInfos Lib "SMBIOSdll.dll" (ByVal pBuffer As Long, ByVal nBufferLenght As long) As long
Declare Function GetDMITableStructure Lib "SMBIOSdll.dll" Alias "GetDMITableStructure" (ByVal pStruc As Long, Byval pBuffer As long, ByVal nBufferLenght As long) As long

pour passer les buffers au fonction il faut utiliser varptr()

la premiere renvoie des infos sur DMI
la seconde renvoie les structures demandées

pour plus d'infos sur DMI(SMBIOS) : http://www.dmtf.org/standards/bios.php

la dll et le driver .sys doivent etre dans le répertoire de l'executable VB.Net ou VB6.0 (sous VB6.0 ils doivent aussi etre dans le répertoire de VB (pourquoi ? je sais pas :()) Dans VB6.0, il ne faut pas utiliser le bouton Stop de VB mais arret le programme par la croix de la fenetre

Conclusion :


N'hésitez pas à commenter et à noter...
Ce code ne comporte pas de bugs... à ma connaissance...

Une version VB6.0 et VB.Net sont disponibles.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

unruledboy
Messages postés
9
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
-
ok, I have found the spec you mentioned above, thanks.

and I found that since your code is written a few years ago, now there are quite a few new hardwares/types invented, the spec is upgraded too.

after checking out all your codes, you are really a code guru:)
unruledboy
Messages postés
9
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008
-
hi,

I check out the code, it display the following types: 0,1,2,3,4,8,9,11,12,13,16,17

what are remaning 5,6,7,14,15 etc stand for?
ShareVB
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11 -
salut,

pour les températures/vitesses, il existe une classe WMI mais qui ne permet de pas de lire la température (non implémenté)...sinon, le problème (qui est aussi celui de Microsoft) c'est qu'il n'y a pas une interface standard pour lire ces infos...il faut une base de donnée d'offset (et d'autres) pour tous les types de capteurs...ce qui est très difficile à tester sur une seule machine...je n'ai pas de projet correspondant...

Pour la température des disques, j'ai deux solutions :
-> WMI : MSStorageDriver_FailurePredictData et autres
-> http://www.vbfrance.com/codes/LECTURE-ATTRIBUTS-SMART-DIQUE-DUR-IDE-TEMPERATURE-DISQUE_7826.aspx

ShareVB
cs_Mauricet
Messages postés
89
Date d'inscription
lundi 3 mars 2003
Statut
Membre
Dernière intervention
28 juillet 2008
-
Bonjour
Le logiciel fonctionne maintenant. Merci
Comment peut-on sortir les différentes informations de températures et les vitesses des ventilateurs ?
Ainsi que la température du disque dur ?
Maurice
ShareVB
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
11 -
salut,

j'oublié : testé fonctionnel sous 2000, 2003, XP Pro et Vista. Ne fonctionne pas sous NT4 et 9x/ME

sinon, pour que la dll et le sys soient trouvés, il faut faire ce qui est dans les instructions...

sinon, aussi, les sources de la dll et du driver sont sur http://www.cppfrance.com/codes/SMBIOS-DMI-INFORMATIONS-SUR-VOTRE-ORDINATEUR-MEMOIRE-BIOS_25606.aspx

ShareVB

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.