powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли как-то создавать вложеные пространства имён?
7 сообщений из 7, страница 1 из 1
Можно ли как-то создавать вложеные пространства имён?
    #39093639
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Windows 7; WinAPI

Код моего приложения создаёт объекты ядра ОС в определённом мною же приватном пространстве имён. Если не завершая сеанс работы моего приложения я переключусь в другой профиль Windows, тем самым создав другую сессию и своё приложение так же запущу и в ней, то получу ошибку, вызванную тем, что мой код не может создать или открыть приватный неймспейс, уже созданный из другой сессии.

Однако я бы не хотел, чтобы приватное пространство имён, созданное мною, было видно в других сессиях... Т.е. область видимости своего приватного пространства имён я хочу ограничить только текущей сессией.

Я пробовал использовать префикс "Local\\" в имени пространства, а так же в имени его дескриптора границ (т.е. хотел создать неймспейс, являющийся вложенным по отношению к локальному пространству имён), но это не помогло.

Можно ли как-то создавать вложеные пространства имён? Как обычно решаются подобные проблемы?

P.S. Я в курсе того, что объекты ядра ОС можно разместить непосредственно в локальном пространстве имён и тогда они будут уникальны для каждой сессии, но в данном случае меня интересует ситуация применительно к приватным пространствам имён.
...
Рейтинг: 0 / 0
Можно ли как-то создавать вложеные пространства имён?
    #39093908
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumКак обычно решаются подобные проблемы?
они не создаюся.

Подробнее - чего хочешь добиться?
...
Рейтинг: 0 / 0
Можно ли как-то создавать вложеные пространства имён?
    #39093917
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Что непонятно в обозначенном мною вопросе?
...
Рейтинг: 0 / 0
Можно ли как-то создавать вложеные пространства имён?
    #39093920
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumЧто непонятно в обозначенном мною вопросе?
Local\ - знаю,
Global\ - знаю

что такое "приватное" - не знаю
...
Рейтинг: 0 / 0
Можно ли как-то создавать вложеные пространства имён?
    #39093925
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

Jeffrey Richter Private Namespaces
When you create a kernel object, you can protect the access to it by passing a pointer to a SECURITY_ATTRIBUTES structure. However, prior to the release of Windows Vista, it was not possible to protect the name of a shared object against hijacking. Any process, even with the lowest privileges, is able to create an object with a given name. If you take the previous example where an application is using a named mutex to detect whether or not it is already started, you could very easily write another application that creates a kernel object with the same name. If it gets started before the singleton application, this application becomes a "none-gleton" because it will start and then always immediately exit, thinking that another instance of itself is already running. This is the base mechanism behind a couple of attacks known as Denial of Service (DoS) attacks. Notice that unnamed kernel objects are not subject to DoS attacks, and it is quite common for an application to use unnamed objects, even though they can't be shared between processes.

If you want to ensure that the kernel object names created by your own applications never conflict with any other application's names or are the subject of hijack attacks, you can define a custom prefix and use it as a private namespace as you do with Global and Local. The server process responsible for creating the kernel object defines a boundary descriptor that protects the namespace name itself.
Функции:
CreateBoundaryDescriptor
CreatePrivateNamespace
...
Рейтинг: 0 / 0
Можно ли как-то создавать вложеные пространства имён?
    #39093940
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант добавить в имя SessionID
...
Рейтинг: 0 / 0
Можно ли как-то создавать вложеные пространства имён?
    #39095036
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКак вариант добавить в имя SessionID
Да, можно использовать как вариант, спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли как-то создавать вложеные пространства имён?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]