Поделиться через


Идентификация функций в библиотеках DLL

Идентификатор функции DLL состоит из следующих элементов:

  • Имя функции или порядковый номер

  • Имя файла DLL, в котором находится реализация

Например, при указании функции MessageBox в библиотеке User32.dll определяется функция (MessageBox) и ее расположение (User32.dll, User32 или user32). Программный интерфейс Microsoft Windows (API Windows) может содержать две версии для каждой функции, обрабатывающей символы и строки: версию ANSI для однобайтовых символов и версию Юникода для двухбайтовых символов. Если кодировка не указана, она определяется полем CharSet (по умолчанию ANSI). Некоторые функции могут иметь более двух версий.

MessageBoxA — это точка входа ANSI для функции MessageBox; MessageBoxW — версия для Юникода. Чтобы получить список имен функций в конкретной библиотеке DLL, например user32.dll, можно воспользоваться различными средствами командной строки. Например, для получения имен функций можно воспользоваться dumpbin /exports user32.dll или link /dump /exports user32.dll.

Неуправляемую функцию в коде можно переименовать, при условии что новое имя функции соответствует исходной точке входа в библиотеке DLL. Инструкции по переименованию неуправляемой функции DLL в управляемом исходном коде см. в разделе Указание точки входа.

Вызов неуправляемого кода позволяет управлять значительной частью операционной системы с помощью вызова функций в API Windows и других библиотеках DLL. Наряду с API Windows существует несколько других API и библиотек DLL, для которых доступен вызов неуправляемого кода.

В следующей таблице описаны несколько распространенных библиотек DLL в API Windows.

DLL-библиотеки Описание содержимого
GDI32.dll Функции интерфейса графических устройств (GDI) для вывода информации на устройство, например функции для рисования и управления шрифтами.
Kernel32.dll Низкоуровневые функции операционной системы для управления памятью и обработки ресурсов.
User32.dll Функции управления Windows для обработки сообщений, таймеров, меню и обмена данными.

Полную документацию по API Windows см. в разделе "Пакет SDK платформы". Примеры, демонстрирующие создание. Объявления на основе NET для использования с вызовом платформы см. в разделе "Маршаллирование данных с помощью вызова платформы".

См. также