Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2016, 19:10   #1
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
Вопрос Возможно ли создать именованную глобальную область в куче?

Добрый день.
Собственно вопрос по сабжу. Есть ли api-функции для выделения именованной области памяти указанного размера в куче с целью открытия, чтения, записи разными процессами? Как вариант файловый маппинг, но он работает со свопом, что не есть быстро. Или я ошибаюсь?
Посоветуйте варианты. Спасибо!
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 14.03.2016, 19:16   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Чтоб решить что лучше, надо знать что нужно.
Своп работает достаточно быстро, не парьтесь об этом.
waleri вне форума Ответить с цитированием
Старый 14.03.2016, 19:20   #3
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

окей, значит что нужно: нужно позволить энному количеству процессов читать/писать данные объемом в несколько кбайт. и вопрос в догонку если выбор на файловом маппинге - заботится ли система о синхронизации чтения/записи выделенного участка памяти разными процессами? или же придется защищать вызовы чтения/записи объектом синхронизации?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 14.03.2016, 21:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

синхронизация такая же как в случае с файлом, никакая.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.03.2016, 21:38   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Защищать это еще полдела. Потом еще надо будет сигнализировать, что данные можно обрабатывать.

Я бы сделал через mailslot...
waleri вне форума Ответить с цитированием
Старый 19.03.2016, 19:16   #6
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Ищу способ синхронизации чтения/записи объекта мэппинга разными процессами/потоками без использования объектов синхронизации.
Нашел функции:
FlushViewOfFile
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

FlushFileBuffers
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Задача такая: возможно ли без мьютексов, событий и т.д. сделать синхронный доступ к файловому мэппингу одновременно разными процессами? ведь насколько я понимаю, сброс файловых буферов приведет к записи на диск, а это синхронная операция, и выполняется она атомарно для переданного количества данных?
Либо если я ошибаюсь, кто может разъясните смысл этих функций. Спасибо.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 19.03.2016, 19:30   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

буфер обмена мож подойдёт?
афтор, колись - чо задумал! А не то спущу сабаку!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 19.03.2016, 19:39   #8
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

буфер обмена - возможно создать свой личный буфер, не задействуя системный? и можно ли сделать его именованным для многосессионного доступа (из разных учеток Винды)?
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 19.03.2016 в 19:42.
3D Hunter вне форума Ответить с цитированием
Старый 19.03.2016, 20:05   #9
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Одним предложением: необходимо создать ИМЕНОВАННУЮ структуру выделенной ГЛОБАЛЬНОЙ памяти с возможностью СИНХРОННЫХ операций чтения/записи РАЗНЫМИ процессами.
С помощью каких функций данное возможно организовать и возможно ли в принципе?
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 19.03.2016, 20:38   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
буфер обмена - возможно создать свой личный буфер, не задействуя системный?
определённо да.
Цитата:
можно ли сделать его именованным для многосессионного доступа (из разных учеток Винды)?
Уверен, что можно. Сервисы, работающие под аккаунтом SYSTEM, никто не отменял. Примеры можешь у себя в диспетчере задач посмотреть. Вот, к примеру, bluetooth-сервис:

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли создать экономическую игру на флэш? KookRap Помощь студентам 7 29.08.2015 23:02
Возможно ли создать форму в dll ? snake9x Visual C++ 1 08.05.2013 12:09
Возможно ли создать ПРОГРАММУ ? dikzz Помощь студентам 1 26.11.2012 23:11
Возможно ли создать такой пользовательский формат? motorway Microsoft Office Excel 16 21.05.2010 00:45
Возможно ли создать локальные дескрипторы окон? Mixim Win Api 1 26.02.2010 10:27