Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/12/2012, 09:38
williamfj
 
Fecha de Ingreso: mayo-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 0
Respuesta: Acceso a sensores de pc

hola muchas gracias por atender mi pregunta ,crei que no iva a tener respuesta .

les comento que primero probe la opcion de WMI que parecia mas facil pero al tratar de usarla con MINGW ,el compilador que uso tube problemas de incompatibilidad segun lo que pude leer en internet.

y la segunda opcion que es bajarme al ensamablador ya la habia contemplado y tengo un pequeño programa corriendo pero como tengo la mala costumbre de copy paste pues no comprendo muy bien como es que se jala la informacion.

tengo experiencia en ensamblador de microcontrolador motorola y pic pero la documentacion que gentilmante compartio Malenko es bastante extensa y compleja por lo cual veo que si me guio por esta se va a alargar mucho el desarrollo del proyecto.

a continuacion pego el codigo que esta funcionando usando asm(se me hace muy curioso que no existan librerias estandar en c que manejen este tema...:( )
/************************************************** **************

#include <stdio.h>

void cpuid(unsigned info, unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
{
*eax = info;
__asm volatile
("mov %%ebx, %%edi;" /* 32bit PIC: don't clobber ebx */
"cpuid;"
"mov %%ebx, %%esi;"
"mov %%edi, %%ebx;"
:"+a" (*eax), "=S" (*ebx), "=c" (*ecx), "=d" (*edx)
: :"edi");
}

int main()
{
unsigned int eax, ebx, ecx, edx;
int i;

for (i = 0; i < 6; ++i)
{
cpuid(i, &eax, &ebx, &ecx, &edx);
printf("eax=%i: %#010x %#010x %#010x %#010x\n", i, eax, ebx, ecx, edx);
}

return 0;
}
/************************************************** ******

teniendo como resultado lo siguiente

eax=0: 0x00000001 0x68747541 0x444d4163 0x69746e65
eax=1: 0x00060fb1 0x00020800 0x00002001 0x178bfbff
eax=2: 0000000000 0000000000 0000000000 0000000000
eax=3: 0000000000 0000000000 0000000000 0000000000
eax=4: 0000000000 0000000000 0000000000 0000000000
eax=5: 0000000000 0000000000 0000000000 0000000000


pero no conozco el significado del retorno de la funcion cpuid ,esoso numeros equivalen a un modelo de prosesador?????