Einzelnen Beitrag anzeigen

Ralf107

Registriert seit: 17. Mär 2008
Ort: Berlin
4 Beiträge
 
Delphi 7 Professional
 
#10

Re: Thread sauber Beenden ? Handle ungültig.

  Alt 17. Mär 2008, 15:41
Ich schlage mich auch schon seit einiger Zeit mit der PDH.dll herum, bisher mit mäßigem Erfolg.

Beim Aufruf von PdhGetFormattedCounterValue() stürzt die Software ab, als ob stdcall nicht stimmt oder ein Varaiblentyp falsch deklariert ist.

Zitat von El.Blindo:
Delphi-Quellcode:
{...}
  _PDH_FMT_COUNTERVALUE = record
    CStatus : DWORD;
    longValue : Longint;
    doubleValue : double;
    largeValue : LONGLONG;
    AnsiStringValue : LPCSTR;
    WideStringValue : LPCWSTR;
  end;
{...}
Interessante Deklaration!

Zitat von msdn:
Delphi-Quellcode:
typedef struct _PDH_FMT_COUNTERVALUE
  DWORD CStatus; 
  union { // !!!
    LONG longValue;   
    double doubleValue;   
    LONGLONG largeValue;   
    LPCSTR AnsiStringValue;   
    LPCWSTR WideStringValue;
  }
;
} PDH_FMT_COUNTERVALUE, *PPDH_FMT_COUNTERVALUE;
Müsste der union nicht als varianter Record deklariert werden?

Delphi-Quellcode:
  _PDH_FMT_COUNTERVALUE = record
    CStatus : DWORD;
    case Integer of // !!!
     0 : ( longValue : Longint );
     1 : ( doubleValue : double );
     2 : ( largeValue : LONGLONG );
     3 : ( AnsiStringValue : LPCSTR );
     4 : ( WideStringValue : LPCWSTR );
  end;
  Mit Zitat antworten Zitat