按名字共享对象的另一种方法是,进程不调用C r e a t e *函数,而是调用下面显示的O p e n *函
数中的某一个:
注意,所有这些函数都拥有相同的原型。最后一个参数p s z N a m e用于指明内核对象的名字。
不能为该参数传递N U L L,必须传递以0结尾的地址。这些函数要搜索内核对象的单个名空间,
以便找出匹配的空间。如果不存在带有指定名字的内核对象,该函数返回N U L L,G e t L a s t E r r o r
返回2(E R R O R F I L E N O T F O U N D)。但是,如果存在带有指定名字的内核对象,并且它是
相同类型的对象,那么系统就要查看是否允许执行所需的访问(通过d w D e s i r e d A c c e s s参数进
行访问)。如果拥有该访问权,调用进程的句柄表就被更新,对象的使用计数被递增。如果为
b I n h e r i t H a n d l e参数传递T R U E,那么返回的句柄将是可继承的。
调用C r e a t e *函数与调用O p e n *函数之间的主要差别是,如果对象并不存在,那么C r e a t e *函
数将创建该对象,而O p e n *函数则运行失败。
数中的某一个:
注意,所有这些函数都拥有相同的原型。最后一个参数p s z N a m e用于指明内核对象的名字。
不能为该参数传递N U L L,必须传递以0结尾的地址。这些函数要搜索内核对象的单个名空间,
以便找出匹配的空间。如果不存在带有指定名字的内核对象,该函数返回N U L L,G e t L a s t E r r o r
返回2(E R R O R F I L E N O T F O U N D)。但是,如果存在带有指定名字的内核对象,并且它是
相同类型的对象,那么系统就要查看是否允许执行所需的访问(通过d w D e s i r e d A c c e s s参数进
行访问)。如果拥有该访问权,调用进程的句柄表就被更新,对象的使用计数被递增。如果为
b I n h e r i t H a n d l e参数传递T R U E,那么返回的句柄将是可继承的。
调用C r e a t e *函数与调用O p e n *函数之间的主要差别是,如果对象并不存在,那么C r e a t e *函
数将创建该对象,而O p e n *函数则运行失败。