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

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

Восстановить пароль Регистрация
 
__Dim__
0 / 0 / 0
Регистрация: 25.06.2009
Сообщений: 18
05.05.2014, 14:46     Обмен данными между процессами #1
Уважаемое сообщество, подскажите, пожалуйста, с решением такой проблемы: у меня два процесса c# и с++, и мне необходимо передавать массив байт из одного процесса в другой, в частности из c#, в с++. В процессе c# я формирую MMF без физического файла. Подскажите, как реализовать доступ к этой области памяти из с++?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
05.05.2014, 16:18     Обмен данными между процессами #2
http://lmgtfy.com/?q=interprocess+communication
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
05.05.2014, 16:41     Обмен данными между процессами #3
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
newbie666
Заблокирован
05.05.2014, 16:52     Обмен данными между процессами #4
Цитата Сообщение от Jupiter Посмотреть сообщение
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Немного строк...(классическая схема)
В софте на С++ открываешь проецируемый в память файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HANDLE hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, L"MySuperNamedMutex");
    if (hMutex && hMutex != INVALID_HANDLE_VALUE)
    {
        DWORD dwWait = WaitForSingleObject(hMutex, 1000);
        switch (dwWait)
        {
        case WAIT_OBJECT_0:
            {
                HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, L"NameOfMyMAppedFile:-)");
                if (hMapFile != INVALID_HANDLE_VALUE)
                {
                    LPVOID lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
                    if (lpMapAddress)
                    {
                        byte *buffer = (byte*)lpMapAddress; //ДАННЫЕ ТВОЕГО ПРОЕЦИРУЕМОГО В ПАМЯТЬ ФАЙЛА....
где L"MySuperNamedMutex" - имя именного мьютекса, которое должно быть общим для софта в С++ и C#,
где L"NameOfMyMAppedFile:-)" - имя самого объекта фала в памяти (не на HDD), которое должно быть общим для софта в С++ и C#
Yandex
Объявления
05.05.2014, 16:52     Обмен данными между процессами
Ответ Создать тему
Опции темы

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