Известные DLL

Известные DLL

Создание эффективных Win32-приложений - ДЖ. Рихтер

При вызове HeapAlloc (см. ниже) функция GetProcAddress просмотрит раздел экс­порта Kernel32.dll и, выяснив, что HeapAlloc — переадресуемая функция, рекурсивно вызовет сама себя для поиска RtlAllocateHeap в разделе экспорта NTDLL.dll.

GetProcAddress(GetModuleHandle("Kernel32"), "HeapAlloc");

Вы тоже можете применять переадресацию вызовов функций в своих DLL. Самый простой способ — воспользоваться директивой pragma:

// переадресация к функции из DllWork

#pragma comment(linker, "/export:SomeFunc=DllWork.SomeOtherFunc")

Эта директива сообщает компоновщику, что DLL должна экспортировать функцию SomeFunc, которая на самом деле реализована как функция SomeOtherFunc в модуле DllWork.dll. Такая запись нужна для каждой переадресуемой функции.

Известные DLL

Некоторые DLL, поставляемые с операционной системой, обрабатываются по-особо­му. Они называются известными DLL (known DLLs) и ведут себя точно так же, как и любые другие DLL с тем исключением, что система всегда ищет их в одном и том же каталоге. В реестре есть раздел:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\

Session Manager\KnownDLLs

Содержимое этого раздела может выглядеть примерно так, как показано ниже (при просмотре реестра с помощью утилиты RegEdit.exe).

 

Как видите, здесь содержится набор параметров, имена которых совпадают с име­нами известных DLL. Значения этих параметров представляют собой строки, иден­тичные именам параметров, но дополненные расширением .dll. (Впрочем, это не все­гда так, и Вы сами убедитесь в этом на следующем примере.) Когда Вы вызываете LoadLibrary или LoadLibraryEx, каждая из них сначала проверяет, указано ли имя DLL вместе с расширением .dll. Если нет, поиск DLL ведется по обычным правилам.

ДЖ. Рихтер: Создание эффективных Win32-приложений. Часть 4.

Новости

все
25.07.2012
Главный инспектор аэрокосмического агентства США, НАСА, сообщил о расследовании скандального
24.07.2012
Анонсированы Leica M9 и X1: карманный FF и APS-C с фиксом Для тех, кто не желает таскать с
23.07.2012
Скоро беспроводная сеть позволит посмотреть сквозь стену? Видеть сквозь препятствия –

Дизайны

Разработали структуру сайта, создали сайт, соответствующий всем требованиям заказчика. Создали
Разработали структуру сайта, создали сайт по новым технологиям. Создали индивидуальный и
ООО Транспортная Компания «ТрансРусь» предлагает Вам свои услуги по приемке и