Einzelnen Beitrag anzeigen

Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

uallcollection - GetRealModule Handle win speicherverwaltung

  Alt 22. Jul 2005, 18:53
Hallo
Speziell zur function getrealmodulehandle von der uallcollection hätte ich ein zwei Fragen.

Delphi-Quellcode:
function GetRealModuleHandle(addr: pointer): cardinal; stdcall;
var h, i: cardinal;
    buf: array[0..255] of char;
begin
  h := cardinal(addr) and $FFFF0000;
  repeat
    i := GetModuleFilename(h,buf,255);
    dec(h,$10000);
  until (i <> 0) or (h = 0);
  if (h = 0) then
    result := 0 else
    result := h+$10000;
end;
warum wird hier binär addiert?
cardinal(addr) and $FFFF0000; und danach $10000 hex abgezogen?
dec(h,$10000); mir ist ist bei der ganzen funktion einfach nicht klar, wie die den "RealModulHandle" ermittelt?
Auch warum die funktion dann mit ntdll.dll verglichen wird ist mir einfach unverständlich.
Delphi-Quellcode:
if GetRealModuleHandle(addr) <> GetModuleHandle('ntdll.dll') then
              result := false;
Hoffe jemand hilft mir bei dem puzzle .
Arnulf
  Mit Zitat antworten Zitat