mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 18:55:10 +01:00
commit
631e12d4e5
@ -233,6 +233,14 @@ int zmq::signaler_t::make_fdpair (fd_t *r_, fd_t *w_)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#elif defined ZMQ_HAVE_WINDOWS
|
#elif defined ZMQ_HAVE_WINDOWS
|
||||||
|
SECURITY_DESCRIPTOR sd = {0};
|
||||||
|
SECURITY_ATTRIBUTES sa = {0};
|
||||||
|
|
||||||
|
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
|
||||||
|
SetSecurityDescriptorDacl(&sd, TRUE, 0, FALSE);
|
||||||
|
|
||||||
|
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||||
|
sa.lpSecurityDescriptor = &sd;
|
||||||
|
|
||||||
// This function has to be in a system-wide critical section so that
|
// This function has to be in a system-wide critical section so that
|
||||||
// two instances of the library don't accidentally create signaler
|
// two instances of the library don't accidentally create signaler
|
||||||
@ -241,9 +249,9 @@ int zmq::signaler_t::make_fdpair (fd_t *r_, fd_t *w_)
|
|||||||
// Note that if the event object already exists, the CreateEvent requests
|
// Note that if the event object already exists, the CreateEvent requests
|
||||||
// EVENT_ALL_ACCESS access right. If this fails, we try to open
|
// EVENT_ALL_ACCESS access right. If this fails, we try to open
|
||||||
// the event object asking for SYNCHRONIZE access only.
|
// the event object asking for SYNCHRONIZE access only.
|
||||||
HANDLE sync = CreateEvent (NULL, FALSE, TRUE, TEXT ("zmq-signaler-port-sync"));
|
HANDLE sync = CreateEvent (&sa, FALSE, TRUE, TEXT ("Global\\zmq-signaler-port-sync"));
|
||||||
if (sync == NULL && GetLastError () == ERROR_ACCESS_DENIED)
|
if (sync == NULL && GetLastError () == ERROR_ACCESS_DENIED)
|
||||||
sync = OpenEvent (SYNCHRONIZE, FALSE, TEXT ("zmq-signaler-port-sync"));
|
sync = OpenEvent (SYNCHRONIZE | EVENT_MODIFY_STATE, FALSE, TEXT ("Global\\zmq-signaler-port-sync"));
|
||||||
|
|
||||||
win_assert (sync != NULL);
|
win_assert (sync != NULL);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user