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