Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ViktorBS
1

CreateFileMapping (написать DLL для обмена данными между большим количеством процессов (100-200))

27.05.2013, 15:18. Просмотров 629. Ответов 0
Метки нет (Все метки)


Добрый день!
Необходимо написать DLL для обмена данными между большим количеством процессов (100-200)
Объем данных заранее не известен и может быть от нескольких кб до 2Г

Решается эта задача на данный момент так:

1. Делаю маппинг CreateFileMapping(INVALID_HANDLE_VALUE, ... на максимальный размер 2Г с использованием флага SEC_RESERVE
2. Проецирую фрагмент в адресное пространство процесса MapViewOfFile блоками размером sysInfo.dwAllocationGranularity
3. Выделяю память через VirtualAlloc блоками размером sysInfo.dwPageSize с флагом MEM_COMMIT (ровно столько, сколько нужно на данный момент)

Вроде все работает, но смущает маппинг на максимальный размер в 2Г. Как себя поведет Windows если этих объектов будет много.
Про возможность расширения секций с использованием NtExtendSection я в курсе, но несколько смущает не документированность этой функции, по этому от нее отказался.

Насколько корректно реализована задача на данный момент и не ждут ли меня проблемы в будущем, т.к. эта DLL будет обслуживать критически важный процесс?
Отзовитесь те, кто в этих вещах разбирается.

P.S. Задача должна быть обязательно решена через память, другие варианты не подходят.
P.P.S. Про синхронизацию, mutex и т.д. я в курсе.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2013, 15:18
Ответы с готовыми решениями:

Сервер для обмена данными на 100 человек
Нужен сервер на 100 человек,для общения(чат) и обмена преимущественно небольшими файлами.Есть мысль...

Обмен данными между процессами (с использованием CreateFileMapping, MapViewOfFile, UnMapViewOfFile)
Помогите кто может и чем может, пожалуйста. Нужно разработать приложение, с помощью которого можно...

Сериализация для обмена данными между компьютерами
Недавно я столкнулся с такой проблемой: Есть 2 компьютера на которых расположена одна и та-же...

Программа для обмена данными между другим программами
Не знаю в какую часть форума написать, изучаю c# поэтому тут. Надо сделать небольшую программу для...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2013, 15:18

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Пишу я ПО для обмена данными между сервером и клиентом
Пишу я ПО для обмена данными между сервером и клиентом. В качестве сервера выступает мой хост....

Как найти количество дублей между большим количеством столбцов
Доброго времени суток! Столкнулся с интересной задачей, никак ни могу найти выход. Имеется...

Написать программу тест с большим количеством вопросов, которые будут выбираться случайно
Cуть задания-нужно написать программу тест с большим количеством вопросов которые будут выбираться ...

Программа обмена данными между двумя файлами
8. Разработать программу обмена данными между двумя файлами. Имена файлов вводятся с клавиатуры....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.