2012-07-16 14 views

Respuesta

3

Normalmente, las personas hacen este tipo de cosas a través de WMI, pero que no puede proporcionar información útil en muchas ocasiones, incluso proporcionando información "errónea" porque a veces se basa en proveedor llenado la información de la BIOS (a través de SMBIOS), que a menudo viene vacío o incorrecto, en lugar de comunicarse con la parte específica del hardware.

He pasado por esta experiencia antes de obtener información RAM. WMI proporcionó información incorrecta de la BIOS y descubrí que los chips RAM vienen con un chip especial SPD (Serial Presence Detect) con el que necesitaba comunicarme. Al final, mi empleador optó por la API de CPUID.

Aquí el autor de la CPU-Z habla un poco acerca de este tema en una entrevista:

http://www.techpowerup.com/mobile/reviews/Interviews/Franck_Delattre/1.html.

Para obtener información como esta, debe buscar cómo comunicarse con el Espacio de configuración PCI en modo núcleo a través de un controlador o buscar alguna API alternativa que pueda hacer esto por usted.

Estos son algunos enlaces que he pasado en ese momento:

http://www.codeproject.com/Articles/35378/Access-Physical-Memory-Port-and-PCI-Configuration

http://support.microsoft.com/?scid=kb;en-us;253232&x=3&y=13

http://www.hollistech.com/Resources/Misc%20articles/getbusdata.htm

http://www.osronline.com/showThread.CFM?link=176210#T4

Además, creo que vale la pena mencionar acerca las funciones SetupDi en Windows que a veces son abl e para proporcionar información que WMI no puede.

+0

Gracias Chico. Pasé por SetupDi Api. Aunque parecen mejores que WMI, todavía no son confiables la mayor parte del tiempo. Es sorprendente lo difícil que es encontrar un ejemplo decente para este tipo de cosas. Si termino encontrando una manera confiable, lo publicaré en github :) – ivymike

+0

@ivymike ok, no tuve suerte con la información RAM, NO HABÍA FUENTE CONFIABLE para extraer información de chips SPD. Pude construir un controlador simple para habilitar SMBUS para un ICH específico (puente sur de Intel) construido en mi vieja placa base de PC. Habilitar SMBUS es el primer paso para extraer información de estos chips, he encontrado una guía sobre el paquete linux lm-sensors que tiene un módulo para comunicación SMBUS y un script perl para interpretar los datos SPD. De todos modos, lo he hecho como una prueba de concepto, funcionó en base a la hoja de datos de mi versión ICH específica, que tenía ... –

+0

@ivymike ... direcciones de espacio de configuración PCI específicas. Las especificaciones de hardware cambian incluso de versión a versión para el mismo proveedor. Tendría que apoyar una lista de proveedores. Esto es lo que hace la API de CPUID, y también lo que hace el paquete lm-sensors. La única fuente confiable haría este tipo de esfuerzo de soporte de hardware masivo. –

Cuestiones relacionadas