информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяЗа кого нас держат?Страшный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Спасибо, дядя вошлебник, помогло! 21.09.09 15:48  Число просмотров: 948
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
<programming>
[Win32] Как сделать динамическую структуру данных, доступную из двух и более процессов? 21.09.09 11:07  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Возникла такая необходимость. Суть: есть программа-сервер, которая формирует задания и отдаёт их на выполнение программам-клиентам.

Сервер выделяет память под структуру данных, заполняет её, и запускает клиента, передавая ему в командной строке адрес этой структуры. Клиент получает эту структуру и работает с ней.

Так должно быть в теории, на практике получается вот что. Я пробовал выделять память двумя способами:
lpSv->lpContext[i] = new LPCLIENT_CONTEXT;
и
lpSv->lpContext[i] = (LPCLIENT_CONTEXT) GlobalAlloc(GMEM_FIXED, sizeof(CLIENT_CONTEXT));
И тот и другой способ, как я понял, выделяют память в текущем процессе (т.е. в памяти сервера). Когда клиент пытается обратиться по адресу, переданному ему в командной строке, то вылитает эксепшен.

Есть ли какой-нибудь способ создать разделяемую динамическую структуру данных?

PS. Я знаю, что эту проблему можно решить с помощью именованных каналов и сокетов, но меня интересует именно такой вариант.
memory mapped файлы в том числе для того и придуманы 21.09.09 14:00  
Автор: dl <Dmitry Leonov>
Отредактировано 21.09.09 14:01  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Только выделять память уже не через new, а заданием размера файла, и отображать не реальный файл, а INVALID_HANDLE_VALUE. Ну и передавать не адрес, а имя объекта.
[Win32] Спасибо, дядя вошлебник, помогло! 21.09.09 15:48  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach