Форум программистов, компьютерный форум CyberForum.ru

Распространение данных между приложениями с использованием DLL - C++

Восстановить пароль Регистрация
 
Dimmak
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
25.05.2014, 06:14     Распространение данных между приложениями с использованием DLL #1
Возможно ли использовать dll как "ретранслятор" данных для приложений?
Те первым приложением вызывается функция "set", которая устанавливает переменную i+= 1, a второе приложение вызывает функцию "get", которая возвращает значение переменной i.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
 
//Function declarations
extern "C" __declspec(dllexport) int __cdecl Set() ;
extern "C" __declspec(dllexport) int __cdecl Get() ;
 
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved ){ return TRUE ; }
 
int i= 0 ;                      
__declspec(dllexport) int __cdecl Set()
{ i+= 1 ; return i ; }
 
__declspec(dllexport) int __cdecl Get()
{ int j= i ; if( i> 0){ i= 0 ;} return j ; }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Вованя
116 / 116 / 46
Регистрация: 20.02.2014
Сообщений: 410
25.05.2014, 06:20     Распространение данных между приложениями с использованием DLL #2
Dimmak, если я не ошибаюсь, то каждый экземпляр библиотеки загружается в адресное пространство каждого приложения, то есть, так не получится, нужно использовать какое-то межпроцессное взаимодействие(каналы, сокеты, файлы и т.д)
Dimmak
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
25.05.2014, 06:59  [ТС]     Распространение данных между приложениями с использованием DLL #3
Цитата Сообщение от Вованя Посмотреть сообщение
каждый экземпляр библиотеки загружается в адресное пространство каждого приложения
Да, это так. А если с использованием pointer? Теоритически каждый длл, загруженный в адресное пространство каждого из приложений, будет использовать один и тот же адрес памяти.
Вованя
116 / 116 / 46
Регистрация: 20.02.2014
Сообщений: 410
25.05.2014, 07:16     Распространение данных между приложениями с использованием DLL #4
Цитата Сообщение от Dimmak Посмотреть сообщение
использовать один и тот же адрес памяти.
Ну и что, это ведь только виртуальный адрес, который транслируется потом в физический, а вот как раз таки физический адрес приложений не пересекаются с друг другом, то есть у разных приложений адрес переменной может быть одинаковый(точнее даже адреса начала сегментов одинаковый), но это не значит, что это один и тот же физический адрес. Тут только, как я говорил, либо каналы, либо сокеты, либо файлы, ну и чего может быть еще.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
25.05.2014, 13:29     Распространение данных между приложениями с использованием DLL #5
Цитата Сообщение от Dimmak Посмотреть сообщение
Теоритически каждый длл, загруженный в адресное пространство каждого из приложений, будет использовать один и тот же адрес памяти.
Не факт. dll могут быть загружены по разным адресам. Память выделяется
тоже по разным адресам. В общем, это условие будет срабатывать лишь изредка.
Dimmak
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
26.05.2014, 04:11  [ТС]     Распространение данных между приложениями с использованием DLL #6
Цитата Сообщение от Убежденный Посмотреть сообщение
dll могут быть загружены по разным адресам. Память выделяется
тоже по разным адресам. В общем, это условие будет срабатывать лишь изредка.
Ясно... Одним вопросом меньше.
Yandex
Объявления
26.05.2014, 04:11     Распространение данных между приложениями с использованием DLL
Ответ Создать тему
Опции темы

Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru