内核对象命名空间(Kernel object namespace)
2017-11-01 10:34
555 查看
远程桌面服务具有后面命名内核对象的多个命名空间:事件,信号,互斥,可等待的定时器,文件映射对象,和任务对象。在客户端/服务器应用程序中服务使用一个全局的命名空间。还有,对这些对象而言,每个客户端会话都有一个独立的命名空间。比如Windows Vista。
独立客户端会话命名空间使能多个客户端互不干扰地去跑同样的应用程序。对在一个客户端会话下启动的进程而言,系统使用默认的会话命名空间。然而,这些进程通过在对象名字前加前缀“Global\”来使用全局命名空间。比如,下面的代码调用CreateEvent并在全局命名空间中创建一个名为CSAPP的事件对象。
备注:全局命名空间在WIndows Store App中无效
CreateEvent(NULL, FALSE, FALSE, "Global\\CSAPP");
在远程桌面服务环境中服务程序使用默认的全局命名空间。
session 0只用于主机服务,且没有console session,和之前的Windows版本不一样。
全局命名空间在多个客户端会话上使能进程来与服务程序通信。比如,一个客户端/服务器应用程序可能使用互斥对象来同步。服务器模型能够在全局命名空间创建互斥对象。随后一个客户端命名空间能够使用“Global”前缀来打开该互斥对象。
对于应用程序而言,全局命名空间的另外一个用法就是使用命名对象来检测是否已经有一个应用程序的实例运行在系统的所有session中。该命名对象必须在全局命名空间而不是每个命名空间中创建或打开。由于在每个命名会话命名空间创建了命名对象,所以默认支持一个更为共同的情况,就是每个会话运行应用程序一次。
除了前缀“\Global”之外,客户端进程能够使用前缀“\Local”来明确指定在它们自己的命名空间创建对象。这些关键字都是大消息敏感的。
前缀"\Session"是为系统使用保留的,不应该在内核对象的名字中使用。
通过使用远程桌面服务会话来实现快速用户切换。第一个登录用户使用session 1,下面的登录用户使用session 2,以此类推。内核对象名字必须遵循远程桌面服务概述的准则以便应用程序能够支持多个用户。
通过使用CreateFileMapping,从一个非零会话的全局命名空间中创建一个文件映射对象,这是一个特权操作,因此,一个运行在随意远程桌面会话主机服务会话中应用程序必须使能SeCreateGlobalPrivilege以便在全局命名空间中创建一个文件映射对象。权限检查限制文件映射对象的创建,且不会应用到打开一个已经存在的对象上。比如,如果一个服务或系统创建一个文件映射对象,若该文件映射对象给该用户提供了必要的访问权限,则任何运行在任何会话中的进程能够访问该文件映射对象。
参考网址
独立客户端会话命名空间使能多个客户端互不干扰地去跑同样的应用程序。对在一个客户端会话下启动的进程而言,系统使用默认的会话命名空间。然而,这些进程通过在对象名字前加前缀“Global\”来使用全局命名空间。比如,下面的代码调用CreateEvent并在全局命名空间中创建一个名为CSAPP的事件对象。
备注:全局命名空间在WIndows Store App中无效
CreateEvent(NULL, FALSE, FALSE, "Global\\CSAPP");
在远程桌面服务环境中服务程序使用默认的全局命名空间。
session 0只用于主机服务,且没有console session,和之前的Windows版本不一样。
全局命名空间在多个客户端会话上使能进程来与服务程序通信。比如,一个客户端/服务器应用程序可能使用互斥对象来同步。服务器模型能够在全局命名空间创建互斥对象。随后一个客户端命名空间能够使用“Global”前缀来打开该互斥对象。
对于应用程序而言,全局命名空间的另外一个用法就是使用命名对象来检测是否已经有一个应用程序的实例运行在系统的所有session中。该命名对象必须在全局命名空间而不是每个命名空间中创建或打开。由于在每个命名会话命名空间创建了命名对象,所以默认支持一个更为共同的情况,就是每个会话运行应用程序一次。
除了前缀“\Global”之外,客户端进程能够使用前缀“\Local”来明确指定在它们自己的命名空间创建对象。这些关键字都是大消息敏感的。
前缀"\Session"是为系统使用保留的,不应该在内核对象的名字中使用。
通过使用远程桌面服务会话来实现快速用户切换。第一个登录用户使用session 1,下面的登录用户使用session 2,以此类推。内核对象名字必须遵循远程桌面服务概述的准则以便应用程序能够支持多个用户。
通过使用CreateFileMapping,从一个非零会话的全局命名空间中创建一个文件映射对象,这是一个特权操作,因此,一个运行在随意远程桌面会话主机服务会话中应用程序必须使能SeCreateGlobalPrivilege以便在全局命名空间中创建一个文件映射对象。权限检查限制文件映射对象的创建,且不会应用到打开一个已经存在的对象上。比如,如果一个服务或系统创建一个文件映射对象,若该文件映射对象给该用户提供了必要的访问权限,则任何运行在任何会话中的进程能够访问该文件映射对象。
参考网址
相关文章推荐
- 创建内核对象的专有命名空间
- 进程间通信:使用file-mapping kernel object(文件映射内核对象)
- 进程间通信:使用file-mapping kernel object(文件映射内核对象)
- 漫谈兼容内核之二:关于kernel-win32的对象管理
- PHP命名空间解析规则(告别PHP namespace给你带来的纠结)
- C++ 命名空间namespace的各种用法
- 命名空间的类的对象
- XAML实例教程系列 - 命名空间(NameSpace)
- ACL/CreateMapping/Kernel Object Namespace
- 模块(Module)的用途1 命名空间(Namespace)
- 在Razor中如何引入命名空间?("import namespace in razor view")
- PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
- Struts2 Namespace_命名空间
- PHP5.3中的命名空间(namespace)及其使用详解
- ITK 血管空间对象 VesselTubeSpatialObject
- PHP中命名空间(namespace)的使用方法
- C++ 命名空间namespace
- namespace(命名空间)
- C#.NET常见问题(FAQ)-命名空间namespace如何理解
- [Flex]Flex SDK 4(Gumbo)命名空间(NameSpace)概述