Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по 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


Наверх

Титульная страница Поиск, карта сайта Написать письмо