Идентификация функций в библиотеках 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 для использования с вызовом платформы см. в разделе "Маршаллирование данных с помощью вызова платформы".