AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prozesse oder Anwendungen ermitteln, die eine Datei benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

Prozesse oder Anwendungen ermitteln, die eine Datei benutzen

Ein Thema von PainInYourBrain · begonnen am 26. Okt 2006 · letzter Beitrag vom 16. Jan 2008
 
daPimP

Registriert seit: 26. Okt 2006
25 Beiträge
 
#26

Re: Prozesse oder Anwendungen ermitteln, die eine Datei benu

  Alt 21. Mai 2007, 19:42
Danke für die Tips. Zur Umsetzung:

Zitat:
Vergleiche mit dem Wert den du finden willst (IMO ist das STATUS_BUFFER_TOO_SMALL aus JwaNtStatus) und andernfalls NT_SUCCESS() - bei dir mußt du das der Reihe nach machen. Also wenn STATUS_BUFFER_TOO_SMALL dann Puffer freigeben und mit neuer Größe allozieren - sonst, wenn NT_SUCCESS nicht True zurückgibt, Fehler ausgeben und raus aus der Routine.
Delphi-Quellcode:
  status:= jwanative.NTQuerySystemInformation(jwanative.SystemHandleInformation,
                                              @HANDLEInfo,
                                              sizeof(jwanative.PSYSTEM_HANDLE_INFORMATION),
                                              0);

 if status = jwantstatus.STATUS_BUFFER_TOO_SMALL then
  begin
    form1.Memo1.Lines.Add('STATUS_BUFFER_TOO_SMALL: '+IntToStr(status)); //info
  end else
    if JwaWinType.NT_SUCCESS(Status)= false then begin
      form1.Memo1.Lines.Add('NT_SUCCESS: fehler'); //hier schmeißt er mich raus
      Exit; //worin liegt der fehler?
    end else
      form1.Memo1.Lines.Add('NT_SUCCESS: ok');
Zitat:
SYSTEM_HANDLE_INFORMATION hat eine feste Größe, daher benutzt du hier einfach nur sizeof()
Wenn richtig verstanden, dann so wie oben.

Anschließend..

Zitat:
Pointerwert zu addieren und so den Pointer zum nächsten Record zu bekommen (Stichwort: Pointerarithmetik!).
Am Ende wirst du irgendwo bei SYSTEM_OBJECT_INFORMATION landen.
so was "in der Art"

Delphi-Quellcode:
  
var
  HANDLEListBuffer: PChar;
               obj: PSystem_Object_Information;
            offset: cardinal;
...
 obj := PSYSTEM_OBJECT_INFORMATION(handleListBuffer);
  repeat
    obj := PSYSTEM_OBJECT_INFORMATION(Cardinal(obj) + Offset);
    Offset := obj^.NextEntryOffset;
...
  until Offset = 0;
...
  FreeMem(HANDLEListBuffer);
watch out ... SySSnapper... coming soon
  Mit Zitat antworten Zitat
 


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 16:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz