и недостатки использования LoadLibrary, мы
Теперь, рассмотрев преимущества и недостатки использования LoadLibrary, мы подробно рассмотрим как создать DLL.
Следующий код является каркасом DLL.
;---------------------------------------------------------------------------- ; DLLSkeleton.asm ;----------------------------------------------------------------------------
.386 .model flat,stdcall
opt*on casemap:none inc*ude \masm32\include\windows.inc inc*ude \masm32\include\user32.inc inc*ude \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib
.data .code DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD mov eax,TRUE * ret Dll*ntry Endp
;---------------------------------------------------------------------------- ; Это функция-пустышка - она ничего не делает. Я поместил ее сюда, чтобы ; показать, как вставляют функции в DLL. ;---------------------------------------------------------------------------- TestFunction proc ret TestFunction endp
End DllEntry
;---------------------------------------------------------------------------- ; DLLSkeleton.def ;----------------------------------------------------------------------------
LIBRARY DLLSkeleton EXpORTS TestFunction
Вышеприведенная программа - это каркас DLL. Каждая DLL должна иметь стартовую функцию. Windows вызывает эту функцию каждый pаз, когда:
DLL загружена в первый раз
DLL выгружена
Создается тред в том же процессе
Тред разрушен в том же процессе
DllEntry proc hInstDLL:HINSTANCE, reason:DWORD, reserved1:DWORD
mov eax,TRUE ret
DllEntry Endp
Вы можете назвать стартовую функцию как пожелаете, главное чтобы был END . Эта функция получает три параметра, только первые два из них важны.
hInstDLL - это хэндл модуля DLL. Это не тоже самое, что хэндл процесса. Вам следует сохранить это значение, так как оно понадобится вам позже. Вы не сможете ее получить в дальнейшем легко.
reason может иметь одно из следующих четырех значений:
- DLL_рROCESS_ATTACH - DLL получает это значение, когда впервые загружается в адресное пространство процесса. Вы можете использовать эту возможность для того, чтобы осуществить инициализацию.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий