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

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

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

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

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

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

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

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

что такое "приватное" - не знаю
...
Рейтинг: 0 / 0
03.11.2015, 16:29
    #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
03.11.2015, 16:40
    #39093940
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как-то создавать вложеные пространства имён?
Как вариант добавить в имя SessionID
...
Рейтинг: 0 / 0
05.11.2015, 11:19
    #39095036
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как-то создавать вложеные пространства имён?
Dima TКак вариант добавить в имя SessionID
Да, можно использовать как вариант, спасибо.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли как-то создавать вложеные пространства имён? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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