创建事件对象全局对象

在编程时经常使用EVENT事件对象,在写代码时使用如下代码

TCHAR guid[] = _TEXT("D14F8A13-DD1F-326E-5A05-9B906070B9AB");
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, &guid[0]);

创建出来的事件对象名称为\Sessions\1\BaseNamedObjects\D14F8A13-DD1F-326E-5A05-9B906070B9AB    Sessions后面的1为会话ID,这个事件对象名称是使用Process Explorer看出来的。

但是在服务程序中使用guid打开这个事件对象时,是无法成功的,因为存在会话隔离,所以我们需要创建全局对象,在对象名称前添加global,如下编写代码

TCHAR guid[] = _TEXT("Global\\D14F8A13-DD1F-326E-5A05-9B906070B9AB");
HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, &guid[0]);

使用这个全局的guid创建的对象,在服务的会话或者其它会话中也可以打开,这个叫做全局对象。在Process Explorer中这个事件对象名称为\BaseNamedObjects\D14F8A13-DD1F-326E-5A05-9B906070B9AB

posted @ 2022-12-07 12:54  psj00  阅读(43)  评论(0编辑  收藏  举报