命名对象继承1-验证Create*命名对象安全属性的传递
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*命名对象安全属性的传递的更多相关文章
- 命名对象继承2-验证Open*命名对象安全属性的传递
		
接上一篇 这次是验证Open*(本文使用OpenMutex函数)的命名对象在继承中安全属性的传递 SECURITY_ATTRIBUTES sa; //设置句柄安全性 sa.nLength = size ...
 - js--面向对象继承
		
Object.create()方法可以传入一个原型对象,并创建一个基于该原型的新对象,但是新对象什么属性都没有. // 原型对象: var Student = { name: 'Robot', hei ...
 - JS对象继承篇
		
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
 - JavaScript创建对象及对象继承
		
面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是在ECMAScript中没有类的概念,因此它的对象也与基于类的对象有所不同.实际上,JavaSc ...
 - JavaScript之对象继承
		
原型链继承 function SuperType(){ this.property = true; } SuperType.prototype.getSuperValue = function(){ ...
 - Javascript高级编程学习笔记(22)—— 对象继承
		
继承是所有面向对象的语言最让人津津乐道的概念 许多面向对象的语言都支持两种实现继承的方式: 1.接口继承 2.实现继承 由于ECMAScript中没有函数签名,所以自然也是不支持接口继承 所以JS中能 ...
 - Object.create() 的含义:从一个实例对象,生成另一个实例对象
		
出处:https://wangdoc.com/javascript/oop/object.html#objectcreate 生成实例对象的常用方法是,使用new命令让构造函数返回一个实例.但是很多时 ...
 - javascript对象继承
		
一.实例化和继承的区别 构造函数.原型和实例的关系:每 个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型 对象的内部指针. 类(Class)和实例(Insta ...
 - JS中对象继承方式
		
JS对象继承方式 摘自<JavaScript的对象继承方式,有几种写法>,作者:peakedness 链接:https://my.oschina.net/u/3970421/blog/28 ...
 
随机推荐
- Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days)
			
Leetcode之二分法专题-1011. 在 D 天内送达包裹的能力(Capacity To Ship Packages Within D Days) 传送带上的包裹必须在 D 天内从一个港口运送到另 ...
 - 【Java并发】线程的顺序执行
			
/** * 问题:有线程a.b.c,如何让它们顺序执行? * 方式一:可用Join()方法实现 * 方式二:可用newSingleThreadExecutor() * Created by Smile ...
 - ssh延迟加载问题的解决方案
			
1. 什么是延迟加载问题 ? 业务层查询的数据 关闭session 之后...web层获取延迟加载的数据失败. 例如:查询订单没有查询客户,需要显示客户,session已经关闭,无法查询 2. 如何解 ...
 - Android读取date中年月日
			
1.Date对象:Date date = getDate(); 2.Calendar实例:Calendar calendar = Calendar.getInstance(); 3.calendar. ...
 - 关于hashCode方法的作用
			
想要明白hashCode的作用,你必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 你知道它们的区别吗?前者集合内的元素是有 ...
 - 2019nc#7
			
题号 标题 已通过代码 题解/讨论 通过率 团队的状态 A String 点击查看 进入讨论 566/3539 通过 B Irreducible Polynomial 点击查看 规律 730/229 ...
 - UOJ 34 多项式乘法 FFT 模板
			
这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入格式 第一行两个整数 nn 和 mm,分别表示两个多项式的次数. 第二行 n+1n+1 个整数,表示第一个多项式的 00 到 nn 次项 ...
 - adb logcat命令
			
1.http://blog.csdn.net/tumuzhuanjia/article/details/39555445 2.http://blog.csdn.net/xyz_lmn/article/ ...
 - SpringBoot 参数校验的方法
			
Introduction 有参数传递的地方都少不了参数校验.在web开发中,前端的参数校验是为了用户体验,后端的参数校验是为了安全.试想一下,如果在controller层中没有经过任何校验的参数通过s ...
 - 数论 Day 13
			
数论_CRT(中国剩余定理)& Lucas (卢卡斯定理) 前言 又是一脸懵逼的一天. 正文 按照道理来说,我们应该先做一个介绍. 中国剩余定理 中国剩余定理,Chinese Remainde ...