调用CreateXXXX 这种 WinAPI 时,返回值NULL 跟 INVALIED_HANDLE_VALUE的区别
调用CreateXXXX 这种 WinAPI 时,返回值NULL 和 INVALIED_HANDLE_VALUE的区别
如题
请帮我阐释一下, 创建内核对象时,返回值 NULL 和 INVALIED_HANDLE_VALUE 之间的差别。
为什么要把返回值做成不一样的值? 初衷是什么?
谢谢
------解决思路----------------------
http://blogs.msdn.com/b/oldnewthing/archive/2004/03/02/82639.aspx
------解决思路----------------------
我的见解:做成NULL的话可能是那种需要返回指针的类型的,NULL可以表示一个空指针。做成那种 INVALIED_HANDLE_VALUE 的一般返回一个句柄(句柄可以简单理解为一个id号,一个数字)之类的,这个 INVALIED_HANDLE_VALUE 代表一种无效值,可以是 -1 等
------解决思路----------------------
你说是句柄一点都没有错误,但是对于句柄这个概念,在内核对象部分有的说是内核对象的地址,有的说是内核对象所在表的索引,说法不一。无论是地址还是索引也就是一个数字而已,而INVALID_HANDLE_VALUE和NULL本质上也都是数值,所以不必在这个方面纠结。我看《Windows核心编程》的时候也曾经纠结于这些问题,现在觉得这些问题没有必要,呵呵!个人意见。
如题
请帮我阐释一下, 创建内核对象时,返回值 NULL 和 INVALIED_HANDLE_VALUE 之间的差别。
为什么要把返回值做成不一样的值? 初衷是什么?
谢谢
------解决思路----------------------
http://blogs.msdn.com/b/oldnewthing/archive/2004/03/02/82639.aspx
------解决思路----------------------
我的见解:做成NULL的话可能是那种需要返回指针的类型的,NULL可以表示一个空指针。做成那种 INVALIED_HANDLE_VALUE 的一般返回一个句柄(句柄可以简单理解为一个id号,一个数字)之类的,这个 INVALIED_HANDLE_VALUE 代表一种无效值,可以是 -1 等
------解决思路----------------------
你说是句柄一点都没有错误,但是对于句柄这个概念,在内核对象部分有的说是内核对象的地址,有的说是内核对象所在表的索引,说法不一。无论是地址还是索引也就是一个数字而已,而INVALID_HANDLE_VALUE和NULL本质上也都是数值,所以不必在这个方面纠结。我看《Windows核心编程》的时候也曾经纠结于这些问题,现在觉得这些问题没有必要,呵呵!个人意见。