Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Обмен данными между процессами

Читайте также:
  1. B) зазор между пластинкой и линзой
  2. F10 Menu– переключение между меню. Меню 1
  3. I Международного женского конгресса
  4. I. 1-23. Диалог между Сутой Госвами и Мудрецами
  5. I. Дополнительные обязанности проводника пассажирского вагона международного сообщения.
  6. IV Международной командной педагогической олимпиады-универсиады
  7. IV Международный конкурс-фестиваль хореографических коллективов

 

 

Рисунок 1-29 схема обмена данными между приложениями с использованием DLL

 

Для создания общей области, принадлежащей двум процессам, необходимо:

1) Создать общий проецируемый файл с именем или без имени (для решения данной задачи с именем).

TH:= CreateFileMapping (- --‘имя’);

2) Спроецировать отображаемый файл в адресное пространство процесса:

p:=MapViewOfFie(TH,---,--);

3) Полученный указатель р возвращать каждому приложению.

Действия 1 и 2 должны выполняться для каждого процесса один раз, а действие 3- всякий раз когда возникает необходимость обращаться к области.

Создание Dll, в которой при подключение к процессу (отображение на адресное пространство) с помощью процедуры DllMain будет выполняться действие 1 и 2, а выдача указателя – с помощью экспортируемой функции.

Library Share;

Uses SysUtils,Classes,Windows;

var

HObj: THandle;// отображение объекта отображаемого файла

pMem: Pointer; // указатель на блок

procedure UnMapMemory;// память надо освобождать при завершении приложений, а также при невозможности ее отображения.

begin

If Assigned(pMem) then

begin

UnMapViewOfFile(pMem);

pMem:= nil;

end;

If hObj>0 then

CloseHandle (hObj);

hObj:=0;

end;

procedure MapMemory (Size:Dword);

//1) begin

hObj:=CreateFileMapping(MaxDword,nil,Page_ReadWrite,0,Size, PChar(‘_ShareMem’));

//2) pMem:=MapViewOfFile(hObj,File_Read_Write,0,0,1);

If not Assigned (pMem) then

UnMapMemory //удалить отображение

end;

//3) procedure DllMain(Act:Dword);

begin

case kod of

dll_Process_Attach;

begin

pMem:=nil;

hObj:=0;

MapMemory(2000);

end;

Function GetBlock: pointer;stdcall;

begin

result:=pMem;

end;

exports GetBlock;

begin

DllProc:=@DllMain;

DllMain:=(Dll_Process_Attach);

end;

edit2.SetTextBuf(pBuf);

 

 


Дата добавления: 2015-07-07; просмотров: 193 | Нарушение авторских прав


Читайте в этой же книге: Проблема тупиков и методы борьбы с тупиками | Условия возникновения тупика | Дескрипторные таблицы (ДТ). | Реализация многозадачного режима в защищенном режиме процессоров фирмы Intel | Обработка прерываний в защищенном режиме | Системный режим | Организация виртуальной памяти | Управление страничной памятью в ОС MS Windows | Стратегии подкачки и рабочие наборы страниц | Получение информации о состояниии виртуальной памяти |
<== предыдущая страница | следующая страница ==>
На рисунке 1 -28 показаны перечисленные этапы и используемые для их выполнения системные обрабатывающие программы.| Тема 1.6 Структура MS Windows и драйверы режима ядра

mybiblioteka.su - 2015-2024 год. (0.006 сек.)