Таки QSharedMemory
Однако вот какой вопрос возник: программа 1 написана на Qt, программа 2 на чистом WinAPI. Вопрос на счет ключа. Программа 1 создает шару через конструктор
QSharedMemory(const QString &key, QObject *parent = nullptr)
где key это к примеру некий текст типа такого "SharedMemory Example". Если бы программа 2 была написана на Qt, то все было бы заебитлз.По данному ключу программа 2 видит шару.
Однако у нас WinAPI и он ищет шару через функцию
OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, szName)
где последний параметр это имя ключа. Однако если на его место поставить ключ "SharedMemory Example", то программа 2 шару не видит. Однако если в программе 1 дать команду
то команда выдаст вот такую говнямбу:
qipc_sharedmemory_QSharedMemoryExampleff77196351dd7c1c8f79461ad32f21726fe31f5b
Если ее подставить в программу 2, то WinAPI находит шару. Причем ключ-говнямба на разных машинах имеет одно и то же значение, от чего я сделал вывод что генерируемый nativeKey зависит только исходного текста, который в нашем случае "SharedMemory Example".
Собственно вопрос (сам искал в сети и ничего путного пока не нашел): есть ли возможность в WinAPI обойтись без нативного ключа? Или может в WinAPI есть функция генерации ключа-говнямбы по заданому тексту?
Если программа 1 удалила файл, то как программа 2 его откроет или я не понял смысла обмена ?
Программа номер 2 может быть запущена в момент работы программы 1. Только тогда и произойдет вычитка ID, после чего программа 2 заработает в полную силу. В остальных случаях программа 2 лососнет тунца.