Einzelnen Beitrag anzeigen

Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

WMI Speicherfresser wie beseitiegen

  Alt 24. Nov 2009, 13:01
Servus,

habe mir aus dem Web ne Methode gesucht um per WMI auf Daten zu zugreifen.
Delphi-Quellcode:
var
  Server: string;
  Enum: IEnumVARIANT;
  varArr: OleVariant;
  lNumElements: ULong;
begin
  Server := '127.0.0.1';
  try
    log.Lines.BeginUpdate;
    Enum := CoSWbemLocator.Create.ConnectServer(Server, 'root\cimv2', '',
      '', '', '', 0, nil).ExecQuery('Select * from Win32_LogicalDisk', 'WQL',
      wbemFlagBidirectional, nil)._NewEnum as IEnumVariant;
(*    while (Succeeded(ADsEnumerateNext(Enum, 1, varArr, lNumElements))) and (lNumElements > 0) do
    begin
      DumpWMI_Process(IUnknown(varArr) as SWBemObject);
    end;*)

    Enum := CoSWbemLocator.free;
  finally
// FreeAndNil(Enum);
    log.Lines.EndUpdate;
  end;
Nur oben dieser Code, wenn ich den per Timer immer wieder aufrufe, wird der Speicher größer und größer.
Bei FastMM4 ist alles ok.
Habe schon versucht Variablen freizugeben, aber nichts nur fehler.

Wie muss ich die sachen wieder freigeben?

Mfg
  Mit Zitat antworten Zitat