windows核心编程 第5版 48页 下半部写道

进程B调用CreateMutex时,它会向函数传递安全属性信息和第二参数。如果已经存在一个指定名称的对象,这些对象就会被忽略

于是我通过代码来验证这句话

注意 第47页

这个函数调用创建一个新的互斥量内核对象,并将其命名为“JeffMutex”。注意,在进程A的句柄(表)中,hMutexProcessA并不是一个可继承的句柄-但是通过为对象命名来实现共享时,是否可以继承并非一个必要条件。

    HANDLE hMutex1 = CreateMutex(NULL, FALSE, TEXT("JeffObj")); //创建命名对象句柄1

    SECURITY_ATTRIBUTES sa;  //设置句柄安全性
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
HANDLE hMutex2 = CreateMutex(&sa, FALSE, TEXT("JeffObj")); //创建对象句柄2
DWORD a;
if ((a = GetLastError()) == ERROR_ALREADY_EXISTS){ //判断创建对象句柄2是创建一个对象句柄还是调用对象句柄1 }
else { }
DWORD dwFlags1;
GetHandleInformation(hMutex1, &dwFlags1); //验证对象句柄1的安全性是否为可继承
BOOL fHandleIsInheritable1 = ( != (dwFlags1 & HANDLE_FLAG_INHERIT));
DWORD dwFlags2;
GetHandleInformation(hMutex2, &dwFlags2); //验证对象句柄2的安全性是否为可继承,判断继承安全性是否成功
BOOL fHandleIsInheritable2 = ( != (dwFlags2 & HANDLE_FLAG_INHERIT));
CloseHandle(hMutex1);
CloseHandle(hMutex2);

结果下图

通过fHandleIsInheritable1和fHandleIsInheritable2 的值可以看到,2个值不同,所以命名对象句柄的安全性继承失败

命名对象继承1-验证Create*命名对象安全属性的传递的更多相关文章

  1. 命名对象继承2-验证Open*命名对象安全属性的传递

    接上一篇 这次是验证Open*(本文使用OpenMutex函数)的命名对象在继承中安全属性的传递 SECURITY_ATTRIBUTES sa; //设置句柄安全性 sa.nLength = size ...

  2. js--面向对象继承

    Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象,但是新对象什么属性都没有. // 原型对象: var Student = { name: 'Robot', hei ...

  3. JS对象继承篇

    JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...

  4. JavaScript创建对象及对象继承

    面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是在ECMAScript中没有类的概念,因此它的对象也与基于类的对象有所不同.实际上,JavaSc ...

  5. JavaScript之对象继承

    原型链继承 function SuperType(){ this.property = true; } SuperType.prototype.getSuperValue = function(){ ...

  6. Javascript高级编程学习笔记(22)—— 对象继承

    继承是所有面向对象的语言最让人津津乐道的概念 许多面向对象的语言都支持两种实现继承的方式: 1.接口继承 2.实现继承 由于ECMAScript中没有函数签名,所以自然也是不支持接口继承 所以JS中能 ...

  7. Object.create() 的含义:从一个实例对象,生成另一个实例对象

    出处:https://wangdoc.com/javascript/oop/object.html#objectcreate 生成实例对象的常用方法是,使用new命令让构造函数返回一个实例.但是很多时 ...

  8. javascript对象继承

    一.实例化和继承的区别 构造函数.原型和实例的关系:每 个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型 对象的内部指针. 类(Class)和实例(Insta ...

  9. JS中对象继承方式

    JS对象继承方式 摘自<JavaScript的对象继承方式,有几种写法>,作者:peakedness 链接:https://my.oschina.net/u/3970421/blog/28 ...

随机推荐

  1. [Python] 通过采集23万条数据,对《哪吒》影评分析

    一.说明 数据来源:猫眼: 运行环境:Win10/Python3.7 和 Win7/Python3.5: 分析工具:jieba.WorldCloud.pyecharts和matplotlib: 程序基 ...

  2. 噩梦(双向BFS)

    给定一张N*M的地图,地图中有1个男孩,1个女孩和2个鬼. 字符“.”表示道路,字符“X”表示墙,字符“M”表示男孩的位置,字符“G”表示女孩的位置,字符“Z”表示鬼的位置. 男孩每秒可以移动3个单位 ...

  3. 2019-07-26-hexo博客图片问题

    本人的解决方案 *** 将hexo的主页配置文件中的_config.yml里的post_asset_folder设置为true. 在git bash里运行npm install hexo-asset- ...

  4. 定时器Timer的运用

    1.Timer调度任务的方法

  5. CSS特效集锦:视觉魔法的碰撞与融合(二)

    引言 长久以来,我认识到.CSS,是存在极限的.正如曾经替你扛下一切的那个男人,也总有他眼含热泪地拼上一切,却也无法帮你做到的事情,他只能困窘地让你看到他的无能为力,怅然若失. 然后和曾经他成长的时代 ...

  6. odoo12从零开始:三、1)创建你的第一个应用模型(module)

    前言 以前,我一直都不知道为什么好多框架的入门都是“hello world”开始,当我思前想后我要如何介绍odoo的model.record.template等继承等高级特性时,发现在那之前便需要清楚 ...

  7. Spring Boot2 系列教程(三)理解 Spring Boot 项目中的 parent

    前面和大伙聊了 Spring Boot 项目的三种创建方式,这三种创建方式,无论是哪一种,创建成功后,pom.xml 坐标文件中都有如下一段引用: <parent> <groupId ...

  8. eclipse中SpringBoot的maven项目出现无法解析父类的解决办法

    在eclipse中建立SpringBoot的maven项目时,继承父类,添加如下代码: <parent> <groupId>org.springframework.boot&l ...

  9. JDK、Spring和Mybatis中使用到的设计模式

    一.JDK中的设计模式 (1)结构性模式 1.适配器模式 java.util.Arrays#asList() java.io.InputStreamReader(InputStream) java.i ...

  10. idea中applicationContext-trans.xml中的Cannot resolve bean 'dataSource'...的问题解决

    问题如下: (applicationContext-trans.xml中的部分截图) 先了解问题是怎么出现的: 此处的dataSource是在applicationContext-dao.xml中配置 ...