Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение списка экспорта dll

Delphi , Файловая система , DLL и PlugIns

Получение списка экспорта dll

Автор: Mystic
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение списка экспорта dll

Функция GetImageFunctionList возвращает список всех экспортируемых функций dll
FileName - имя dll
Strings - объетк, в который будут занесен список экспорта.
ВАЖНО! Тестировано только под NT4

Зависимости: Windows, ImageHlp
Автор:       Mystic, mystic2000@newmail.ru, ICQ:125905046, Харьков
Copyright:   Mystic
Дата:        21 апреля 2002 г.
***************************************************** }

function EnumSymbols(SymbolName: PChar; SymbolAddress, SymbolSize: ULONG;
  Strings: Pointer): Bool; stdcall;
begin
  TStrings(Strings).Add(SymbolName);
  Result := True;
end;

function GetImageFunctionList(const FileName: string; Strings: TStrings):
  Boolean;

var
  Handle: THandle;
  hProcess: THandle;
  VersionInfo: TOSVersionInfo;
begin
  Strings.Clear;
  Result := False;

  SymSetOptions(SYMOPT_UNDNAME or SYMOPT_DEFERRED_LOADS);

  VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
  if not GetVersionEx(VersionInfo) then
    Exit;

  if VersionInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
    hProcess := GetCurrentProcessId
  else
    hProcess := GetCurrentProcess;

  if not SymInitialize(hProcess, nil, True) then
    Exit;
  try
    Handle := LoadLibrary(PChar(FileName));
    if Handle = 0 then
      Exit;
    try
      if not SymLoadModule(hProcess, 0, PChar(FileName), nil, Handle, 0) then
        Exit;
      try
        if not SymEnumerateSymbols(hProcess, Handle, EnumSymbols, Strings) then
          Exit;
      finally
        SymUnloadModule(hProcess, Handle);
      end;
    finally
      FreeLibrary(Handle);
    end;
  finally
    SymCleanup(hProcess);
  end;
  Result := True;
end;

Пример использования:

if not GetImageFunctionList('kernel32.dll', ListBox1.Items) then
  raise Exception.Create('Произошла ошибка');

Это код-набор на Delphi, демонстрирующий, как получить список экспортированных функций из динамической связки библиотеки (DLL). Функция GetImageFunctionList принимает два параметра: имя файла DLL и объект TStrings, в котором будет храниться список экспортированных функций.

Разбивка кода:

  1. Первая секция определяет интерфейс для функции EnumSymbols, которая используется для перечисления символов (функций) в DLL.
  2. Функция GetImageFunctionList принимает два параметра: FileName, которое является именем файла DLL, и Strings, который является объектом TStrings, где будет храниться список экспортированных функций.
  3. Функция инициализирует пустой список строк (Strings) и устанавливает результат в False.
  4. Затем она настраивает опции символов с помощью SymSetOptions. Это шаг необходимый для последующего перечисления символов.
  5. Далее функция получает информацию о версии операционной системы с помощью GetVersionEx и проверяет, если она работает на платформе Windows. Если нет, она выходит из функции.
  6. Функция инициализирует handle процесса (hProcess) с помощью либо GetCurrentProcessId, либо GetCurrentProcess, в зависимости от платформы.
  7. Затем она инициализирует handle DLL (Handle) загружая указанный файл DLL с помощью LoadLibrary. Если загрузка неудачна, функция выходит из себя.
  8. Функция затем загружает модуль в таблицу символов с помощью SymLoadModule.
  9. Далее она вызывает функцию SymEnumerateSymbols для перечисления символов в DLL, передавая указатель на функцию EnumSymbols и список строк как аргументы. Если шаг неудачен, функция выходит из себя.
  10. Наконец, функция разгружает модуль из таблицы символов с помощью SymUnloadModule, освобождает память, выделенную для handle DLL с помощью FreeLibrary, и очищает таблицу символов с помощью SymCleanup. Результат устанавливается в True, если перечисление было успешно.

Пример использования в конце кода-набора демонстрирует, как вызвать функцию GetImageFunctionList с конкретным именем файла DLL (kernel32.dll) и хранить список экспортированных функций в компоненте TListBox, названном ListBox1. Если функция неудачна, она поднимает исключение.

Функция GetImageFunctionList позволяет получать список экспортируемых функций из динамической библиотеки (DLL) и является полезной для работы с WinAPI.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DLL и PlugIns ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:22:23/0.0057129859924316/1