Вниз
Скачать: CL | DM;

Вопрос по DLL   Найти похожие ветки 

← →
ph0sgen ©   (2006-08-31 04:37) [0]

Доброго времени суток, уважаемые мастера.

вопрос такой:


library Primer;

uses
 Windows;

begin
 // какое-то действие ...
end.


вызов :   LoadLibrary("Primer.dll")

можно ли при вызове DLL передать ей какие либо данные?
(чтобы с ними работать в dll между begin end.
например MessageBox какой-нибудь)

Спасибо за внимание.


← →
Сергей М. ©   (2006-08-31 09:03) [1]

Можно.
Например, с использованием Memory Mapped File


← →
ph0sgen ©   (2006-08-31 14:26) [2]

Спасибо. А можно пожалуйста поподробробнее?


← →
Сергей М. ©   (2006-08-31 14:33) [3]

Можно.

Код, выполняющий загрузку DLL, создает перед этим MMF-объект (см. CreateFileMapping + MapViewOfFile) и записывает в обазованное при этом АП нужные данные.

Процедура инициализации DLL делает то же самое, получая при этом те самые данные.


← →
ph0sgen ©   (2006-08-31 14:52) [4]

Возможен небольшой пример?


← →
Сергей М. ©   (2006-08-31 14:57) [5]

Возможен.
Но перед этим вопрос - справка по MMF тобой уже прочитана/изучена ?


← →
ph0sgen ©   (2006-08-31 15:42) [6]

Пытаюсь начать так:


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 15:56) [7]

Ты вот это

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

в справке читал ?


← →
Desdechado ©   (2006-08-31 16:59) [8]

Ты скажи лучше, что ты хочешь сделать.
А то ведь удобнее вызывать функции из DLL.
Не забудь, что твою DLL можно загрузить несколько раз. Какой эффект ты от этого ожидаешь?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.028 c
15-1155753195
Ketmar
2006-08-16 22:33
2006.09.17
"а на седьмой день ему всё осто....о" (ц)


15-1156580689
Yura32
2006-08-26 12:24
2006.09.17
Срочно нужна книга по БД для начинаюших


1-1154500320
Alkid
2006-08-02 10:32
2006.09.17
GUID + Variant = Love ?


15-1156936558
PSPF2003
2006-08-30 15:15
2006.09.17
PDF -> DOC


1-1154879824
Vazelin
2006-08-06 19:57
2006.09.17
перехват закрытия окна




   Наверх