AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi WMI-Abfrage zur Ermittlung des Speichertyps fehlerhaft
Thema durchsuchen
Ansicht
Themen-Optionen

WMI-Abfrage zur Ermittlung des Speichertyps fehlerhaft

Ein Thema von devidespe · begonnen am 2. Mär 2017 · letzter Beitrag vom 3. Mär 2017
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

WMI-Abfrage zur Ermittlung des Speichertyps fehlerhaft

  Alt 2. Mär 2017, 18:42
Hallo,

ich weiß, es gibt hier unzählige Themen zu WMI, und doch bin ich nicht fündig geworden.

Ich muss per WMI den Typ des Arbeitsspeichers ermitteln, also führte mich der Weg zu folgender WMI-Abfrage:

SELECT MemoryType FROM Win32_PhysicalMemory

und gemäß offizieller Doku https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx soll dieser Wert den Speichertyp enthalten, und eine zugegebenermaßen veraltete Tabelle erlaubt dann Rückschlüsse auf DDR, DDR2 usw.

Leider erhalte ich ständig den Typ 0 zurück, was laut Tabelle "Unknown" bedeutet. Hat jemand eine Idee, wo ich noch nachsehen kann?

Laut meinen Infos werden die WMI-Daten teilweise aus den SMBios/DMI-Daten des Mainboard-BIOS zusammengestellt, und dort steht korrekt DDR4 drin - aber offensichtlich wird diese Info nicht an WMI weitergegeben...
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: WMI-Abfrage zur Ermittlung des Speichertyps fehlerhaft

  Alt 3. Mär 2017, 08:36
Moin,

hier gibts einen schicken Artikel über das direkte Auslesen des SMBios, auch über WMI, nur eben über den Namespace root\WMI.

Ich meine da gibt es auch einen Unterschied zwischen den Daten in root\CIMV2\Win32_PhysicalMemory und dem was in root\WMI\MSSmBios_RawSMBiosTables steht.
Thomas
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: WMI-Abfrage zur Ermittlung des Speichertyps fehlerhaft

  Alt 3. Mär 2017, 09:13
Ich meine da gibt es auch einen Unterschied zwischen den Daten in root\CIMV2\Win32_PhysicalMemory und dem was in root\WMI\MSSmBios_RawSMBiosTables steht.
Da steht zumindest bei mir aber nicht der genaue Typ (DDR1, DDR2, DDR3...etc.) mit dabei.

Delphi-Quellcode:
//-----------------------------------------------------------------------------------------------------
// This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.9.9.350
// http://code.google.com/p/wmi-delphi-code-creator/
// Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/
// Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2015
//-----------------------------------------------------------------------------------------------------
//
// LIABILITY DISCLAIMER
// THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.
// YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS,
// DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE.
//
//----------------------------------------------------------------------------------------------------
program GetWMI_Info;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants,
  Classes;
  

    
// Raw SMBIOS Tables

procedure GetMSSmBios_RawSMBiosTablesInfo;
const
  WbemUser ='';
  WbemPassword ='';
  WbemComputer ='localhost';
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject : OLEVariant;
  oEnum : IEnumvariant;
  iValue : LongWord;
  SMBiosData: TBytes;
  StringStream: TStringStream;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\WMI', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM MSSmBios_RawSMBiosTables','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln(Format('Active %s',[String(FWbemObject.Active)]));// Boolean
    Writeln(Format('DmiRevision %d',[Integer(FWbemObject.DmiRevision)]));// Uint8
    Writeln(Format('InstanceName %s',[String(FWbemObject.InstanceName)]));// String
    Writeln(Format('Size %d',[Integer(FWbemObject.Size)]));// Uint32
    Writeln('SMBiosData:');// Array of Uint8
    StringStream := TStringStream.Create(TBytes(FWbemObject.SMBiosData));
    Writeln(StringStream.DataString);
    StringStream.Free;
    Writeln(Format('SmbiosMajorVersion %d',[Integer(FWbemObject.SmbiosMajorVersion)]));// Uint8
    Writeln(Format('SmbiosMinorVersion %d',[Integer(FWbemObject.SmbiosMinorVersion)]));// Uint8
    Writeln(Format('Used20CallingMethod %s',[String(FWbemObject.Used20CallingMethod)]));// Boolean
       
    Writeln('');
    FWbemObject:=Unassigned;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      GetMSSmBios_RawSMBiosTablesInfo;
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;
end.
Code:
Size                  2937
SMBiosData:
ÿÿAmerican Megatrends Inc. V1.9 03/30/2015             ØËSzq.MSI MS-7817 1.0 To be filled by O.E.M. To be filled by O.E.M. To be filled by O.E.M.          
 MSI H81M-P33 (MS-7817) 1.0 To be filled by O.E.M. To be filled by O.E.M. To be filled by O.E.M.        J1A1 Keyboard    ÿJ2A1 TV Out            J2A2A COM A     J2A2B Video                  J3A1 USB1
 ÿ  ÿJ6C2 - EXT HDMI   ÿ  ÿJ3C1 - GMCH FAN  ÿ  ÿJ1D1 - ITP       ÿ  ÿJ9E2 - MDC INTPSR        ÿ  ÿJ9E4 - MDC INTPSR        ÿ  ÿJ9E3 - LPC HOT DOCKING   ÿ  ÿJ9E1 - SCAN MATRIX       ÿ  ÿJ9G1 - LPC SIDE BAND     ÿ  ÿJ   J6B2           ãJ6B1             äJ6D1             åJ7B1            æJ8B4             çJ8D1              ðJ8B3  ! To Be Filled By O.E.M. " To Be Filled By O.E.M. #     $                   " %     LM78-1  &   ? ? ? ? ?     ?LM78A $'         # ( % % & To Be Filled By O.E.M. )   ? ? ? ? ?     ?LM78A $*         # + % ( ) To Be Filled By O.E.M. , )      ?Cooling Dev 1  $-         # . % + , To Be Filled By O.E.M. / )      ?   $0         # 1 % . / To Be Filled By O.E.M. 2   ? ? ? ? ?     ?ABC $3  ? ? ? ? ? ?  # 4 % 1 / To Be Filled By O.E.M. 5 j ? ? ? ? ?     ?LM78A 6 j ? ? ? ? ?     ?LM78A 7 6 g     ?Cooling Dev 1  8 j ? ? ? ? ?     ?ABC '9  ?¢5 7 8 To Be Filled By O.E.M. To Be Filled By O.E.M. To Be Filled By O.E.M. To Be Filled By O.E.M. To Be Filled By O.E.M. To Be Filled By O.E.M. To Be Filled By O.E.M. )A$? > @   Í SOCKET 0 Intel Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz Fill By OEM Fill By OEM > ?     CPU Internal L2  ? ?     CPU Internal L1  @ '      CPU Internal L3  A    þÿ           (B A þÿ@ @            ? @    @ÜÜÜChannelA-DIMM0 BANK 0 1311 41061E3F 9876543210 M2F8G64CB8HD5N-DI  #C    ÿÿ B G ÿÿÿ                  (D A þÿ                         ChannelA-DIMM1 BANK 1 [Empty] [Empty] 9876543210 [Empty] (E A þÿ                               ChannelB-DIMM0 BANK 2 [Empty] [Empty] 9876543210 [Empty] (F A þÿ
                  ChannelB-DIMM1 BANK 3 [Empty] [Empty] 9876543210 [Empty] G    ÿÿ A                   ^K    ƒ@L 5           ø \O               Ê     È ÿÿ        f  vPro     ?M 
N                 en|US|iso8859-1  P  N/A N/A N/A N/A N/A N/A N/A N/A N/A
SmbiosMajorVersion    2
SmbiosMinorVersion    8
Used20CallingMethod   False
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: WMI-Abfrage zur Ermittlung des Speichertyps fehlerhaft

  Alt 3. Mär 2017, 09:19
Wobei ich das natürlich hier nur so schnell so per StringStream encoded habe.
Mit den Strukturen aus dem Artikel kommt man vielleicht etwas weiter.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz