PureBasic

GetFunctionEntry()

Синтаксис

*Result = GetFunctionEntry(#Library , FunctionEntry)

Описание


Проверяет, содержит ли библиотека в таблице функций элемент с данным индексом. Эта команда ищет функцию в библиотеке по её позиции в таблице функций, а не по её имени, как в случае команды GetFunction(). Эта команда может быть полезна при вызове недокументированных функций API. Указанная библиотека должна быть ранее открыта с помощью функции OpenLibrary().

Параметры

#Library Номер для идентификации библиотеки содержащей функцию, наличие записи которой требуется проверить. Этот Номер должен совпадать с тем, что ранее был использован в функции OpenLibrary(), при открытии этой библиотеки.
FunctionEntry Номер, представляющий собой индекс функции в библиотеке. Первая функция имеет индекс 1.

Возвращаемое значение

Возвращает адрес в памяти функции из библиотеки при успехе, если же библиотека не содержит функцию с этим индексом - возвратом будет 0.

Комментарии

Функция может быть вызвана по её адресу используя прототипы. Функции CallFunctionFast() и CallCFunctionFast() также могут быть использованы для этого, но прототипы являются рекомендуемым методом, поскольку они более гибкие.

Пример для Windows

Define Num = OpenLibrary(#PB_Any, "kernel32.dll") ; Открывает библиотеку kernel32.dll и запоминает сгенерированный Номер в переменную Num
If GetFunction(Num, "WriteFile")                  ; проверка наличия функции 'WriteFile'
  Debug "Библиотека kernel32.dll действительно содержит функцию 'WriteFile'"
EndIf
If GetFunctionEntry(Num, 100)                   ; проверяет, есть ли в библиотеке, как минимум 100 функций...
  Debug "В таблице функций библиотеки kernel32.dll есть функция под Номером 100"
  Debug "Всего функций: " + CountLibraryFunctions(Num)
EndIf
If IsLibrary(Num)                               ; Проверка, открыта ли библиотека 
  CloseLibrary(Num)                             ; Закрытие библиотеки
EndIf

См. также

GetFunction(), CallFunctionFast(), CallCFunctionFast(), прототипы

Поддерживаемые OS

Windows

<- GetFunction() - Оглавление Library - IsLibrary()->