创建事件对象全局对象
在编程时经常使用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