Einzelnen Beitrag anzeigen

sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#1

Exportierte Funktionen einer DLL auslesen

  Alt 11. Jul 2007, 14:45
Guten Mittag,

ich möchte gerne alle Funktionen, welche von einer DLL exportiert werden, in ein TStringList Objekt auflisten.
Das Problem ist, dass ich schon am Anfang scheitere.

Delphi-Quellcode:
function GetFunctions(lpDllName: String):TStringList;
var
  hFile: THandle;
  ofStct: OFSTRUCT;
  IMGDebugInfo: PImageDebugInformation;
  pExportNames: Pointer;
  pExportSize: Cardinal;
begin
  hFile := OpenFile(PChar(lpDllName), ofStct, OF_READ);
  if (hFile <> 0) and (hFile <> INVALID_HANDLE_VALUE) then
  begin
    IMGDebugInfo := MapDebugInformation(hFile, PChar(lpDllName), nil, 0);
    if IMGDebugInfo <> nil then
    begin
      pExportNames := IMGDebugInfo.ExportedNames;
      pExportSize := IMGDebugInfo^.ExportedNamesSize; //<-- ist immer 0 :-(
      //Continue with the Code.
      UnmapDebugInformation(IMGDebugInfo);
    end;
    CloseHandle(hFile);
  end;
end;
Ich habe noch nie mit den obigen Funktionen gearbeitet, desshalb erhoffe ich Hilfe von euch
Also, das Problem ist, dass ExportNameSize immer 0 ist. Aber wie ich aus MSDN gelesen habe
brauch ich die ja um dann an die Funktionen zu kommen.

Zitat:
ExportedNamesSize
The size of the ExportedNames member, in bytes.
ExportedNames
A pointer to a series of null-terminated strings that name all the functions exported from the image.
Da es 0 ist, gehe ich davon aus, dass er irgendwie nicht an die Funktionen kommt,
bzw. irgendwo ein Fehler ist.

Weiß da jemand Rat? Über Hilfe würde ich mich wirklich freuen.

MfG: sk0r
  Mit Zitat antworten Zitat