Реферат: Разработка DLL в Borland Delphi
Forms,
Windows;
var
SomeBuffer : Pointer;
procedure MyFirstDLLProc(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then
{DLLisвыгружается из памяти.
Освобождаем память, выделенную под буфер.}
FreeMem(SomeBuffer);
end;
procedure HelloWorld(AForm : TForm);
begin
MessageBox(AForm.Handle, Hello world!',
DLL Message Box', MB_OK or MB_ICONEXCLAMATION);
end;
{Какой-нибудь код, в котором используется SomeBuffer.}
exports
HelloWorld;
begin
{Ставим в соответствие переменной
DLLProc адрес нашей процедуры.}
DLLProc := @MyFirstDLLProc;
SomeBuffer := AllocMem(1024);
end.
Как можно увидеть, в качестве признака того или иного события, в результате которого вызывается процедура MyFirstDll, является значение переменной Reason. Ниже приведены возможные значения этой переменной.
DLL_PROCESS_DETACH - библиотека выгружается из памяти; используется один раз;
DLL_THREAD_ATTACH - в оперативную память загружается новый процесс, использующий ресурсы и/или код из данной библиотеки;
DLL_THREAD_DETACH - один из процессов, использующих библиотеку, 'выгружается' из памяти.
Загрузка DLL