![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по DLL
ph0sgen © (2006-08-31 04:37:00)Доброго времени суток, уважаемые мастера.
вопрос такой:
library Primer;
uses
Windows;
begin
// какое-то действие ...
end.
вызов : LoadLibrary('Primer.dll')
можно ли при вызове DLL передать ей какие либо данные?
(чтобы с ними работать в dll между begin end.
например MessageBox какой-нибудь)
Спасибо за внимание.
Desdechado (2006-08-31 16:59:00) [1]Ты скажи лучше, что ты хочешь сделать.
А то ведь удобнее вызывать функции из DLL.
Не забудь, что твою DLL можно загрузить несколько раз. Какой эффект ты от этого ожидаешь?
Сергей М. (2006-08-31 15:56:00) [2]Ты вот это
If hFile is (HANDLE)0xFFFFFFFF, the calling process must also specify a mapping object size in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. The function creates a file-mapping object of the specified size backed by the operating-system paging file rather than by a named file in the file system
в справке читал ?
ph0sgen (2006-08-31 15:42:00) [3]Пытаюсь начать так:
program test;
var
hFile : Cardinal;
hMap : Cardinal;
Mem : Pointer;
begin
hFile := CreateFile('C:\Library.dll', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, nil);
case hFile of DWORD(-1) : Exit; end;
hMap := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, 0, 'C:\Library.dll');
case hMap of 0 : Exit; end;
Mem := MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
end;
а когда нужно вызывать LoadLibrary? и куда писать данные?
Сергей М. (2006-08-31 14:57:00) [4]Возможен.
Но перед этим вопрос - справка по MMF тобой уже прочитана/изучена ?
ph0sgen (2006-08-31 14:52:00) [5]Возможен небольшой пример?
Сергей М. (2006-08-31 14:33:00) [6]Можно.
Код, выполняющий загрузку DLL, создает перед этим MMF-объект (см. CreateFileMapping + MapViewOfFile) и записывает в обазованное при этом АП нужные данные.
Процедура инициализации DLL делает то же самое, получая при этом те самые данные.
ph0sgen (2006-08-31 14:26:00) [7]Спасибо. А можно пожалуйста поподробробнее?
Сергей М. (2006-08-31 09:03:00) [8]Можно.
Например, с использованием Memory Mapped File