Есть процесс создающий мэппированный именной блок памяти, это же блок отображают в свое пространство другие процессы для обмена между собой информацией, как сделать так чтобы при закрытии одного из процессов, удалялось отображение блока в других процессах. П.С. Посылать сообщение о закрытие внутри блока не выходит т.к. процессов много, и качество их написания разное, отсюда частые сбои в их работе. Вот и получается когда главный синхронизирующий доступ процесс хочет изменить обьем отображаемой памяти, он должен пересоздать ее но с новым размером, он удаляет блок а создать новый с тем же именем не может так как один из процессов весит не делая UnmapViewOfFile... и имя занято.
Использовать NtPulseEvent. Во всех процессах должны быть потоки ждущие на этом событии. Когда произойдёт сигнализация эвента поток должен перемапить секцию. При этом выполнив цикл ожидания, либо используя ожидание на есчо одном евенте, который будет сигнализирован при создании новой секции. Тоесть можно использовать пару событий(EventPair). Можно отказаться от использования сихрообьектов и выполнять проверку флага в проекции перед началом обмена данными. Если флаг окажется взведён, то перемапить проекцию.
Я думал об синхронизации через события и симофоры но в итоге выходит что при большом кол-ве процессов это расточительно т.к в x64 под каждый поток выделяется как минимум 64кб.