Функция GetProcAddress

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

Синтаксис

FARPROC GetProcAddress(
  HMODULE hModule,
  LPCSTR lpProcName
);

Параметры

hModule

[in] Дескриптор модуля DLL, который содержит функцию или переменную. Функция LoadLibrary или GetModuleHandle возвращает этот дескриптор.

lpProcName

[in] Указатель на символьную строку с нулем в конце, которая определяет функцию или имя переменной, или порядковое значение функции. Если этот параметр - порядковое значение, оно должно находиться в младшем слове; старшее слово - должно быть нуль.

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

Если функция завершается успешно, возвращаемое значение - адрес экспортируемой функции или переменной.

Если функция завершается ошибкой, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Замечания

Проверка правописания и регистра имени функции, на которое указывает параметр lpProcName должны быть идентичны такому же в операторе EXPORTS определения модуля исходного (.def) файла DLL. Имена экспортируемых функций могут отличаться от имен, которые Вы используете при вызове этих функций в вашем коде. Это различие скрыто макроопределением, используемым в заголовочных файлах SDK. Дополнительную информацию, см. в статье Соглашения для прототипов функций.

Параметр lpProcName может идентифицировать функцию DLL, определяя порядковое значение, связанное с функцией в операторе EXPORTS. GetProcAddress проверяет, что указанный порядковый номер находится в диапазоне от 1 до самого высокого порядкового числа, экспортируемого в .def файле. Функция тогда использует порядковый номер как индекс, чтобы читать адрес функции из таблицы функций. Если .def файл не считает функции последовательно от 1 до N (где N - число экспортируемых функций), может произойти ошибка, где GetProcAddress возвращает недопустимый, не-NULL адрес, даже при том, что функции с указанным порядковым номером нет.

В случаях, когда функция не может существовать, она должна задаваться по имени, а не порядковым значением.

Код примера

Пример см. в статье Использование динамического связывания в период выполнения.

Смотри также

Обзор Динамически подключаемые библиотеки (DLL), Функции, используемые DLLFreeLibrary, GetModuleHandle, LoadLibrary

Размещение и совместимость GetProcAddress

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT  Workstation

Да 

е

Windows Me

Да

н

Windows 98

Да

т

Windows 95

Да

 
С

Windows Server 2003

Да

е Windows 2000 Server Да
р Windows NT Server Да  
в    
е    
р    

Используемая библиотека

Kernel32.lib

Используемая DLL kernel32.dll
 Заголовочный файл  

- объявлено в

Winbase.h

 - включено в

Windows.h

 Unicode

Нет

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz