예제 #1
0
        public void EventWaitHandle_OpenExisting_PathNotFound()
        {
            string name = @"global\foo";

            Assert.Throws <DirectoryNotFoundException>(() =>
            {
                EventWaitHandleAcl.OpenExisting(name, EventWaitHandleRights.FullControl).Dispose();
            });

            Assert.False(EventWaitHandleAcl.TryOpenExisting(name, EventWaitHandleRights.FullControl, out _));
        }
예제 #2
0
        public void EventWaitHandle_OpenExisting_NameInvalid()
        {
            string name = '\0'.ToString();

            Assert.Throws <WaitHandleCannotBeOpenedException>(() =>
            {
                EventWaitHandleAcl.OpenExisting(name, EventWaitHandleRights.FullControl).Dispose();
            });

            Assert.False(EventWaitHandleAcl.TryOpenExisting(name, EventWaitHandleRights.FullControl, out _));
        }
예제 #3
0
        public void EventWaitHandle_OpenExisting_NameNotFound()
        {
            string name = "ThisShouldNotExist";

            Assert.Throws <WaitHandleCannotBeOpenedException>(() =>
            {
                EventWaitHandleAcl.OpenExisting(name, EventWaitHandleRights.FullControl).Dispose();
            });

            Assert.False(EventWaitHandleAcl.TryOpenExisting(name, EventWaitHandleRights.FullControl, out _));
        }
예제 #4
0
        public void EventWaitHandle_OpenExisting_EmptyName()
        {
            Assert.Throws <ArgumentException>(() =>
            {
                EventWaitHandleAcl.OpenExisting(string.Empty, EventWaitHandleRights.FullControl).Dispose();
            });

            Assert.Throws <ArgumentException>(() =>
            {
                EventWaitHandleAcl.TryOpenExisting(string.Empty, EventWaitHandleRights.FullControl, out _);
            });
        }
예제 #5
0
        public void EventWaitHandle_OpenExisting_BadPathName()
        {
            string name = @"\\?\Path";

            Assert.Throws <System.IO.IOException>(() =>
            {
                EventWaitHandleAcl.OpenExisting(name, EventWaitHandleRights.FullControl).Dispose();
            });

            Assert.Throws <System.IO.IOException>(() =>
            {
                EventWaitHandleAcl.TryOpenExisting(name, EventWaitHandleRights.FullControl, out _);
            });
        }
예제 #6
0
        public void EventWaitHandle_TryOpenExisting()
        {
            string name = GetRandomName();
            EventWaitHandleSecurity expectedSecurity = GetEventWaitHandleSecurity(WellKnownSidType.BuiltinUsersSid, EventWaitHandleRights.FullControl, AccessControlType.Allow);

            using EventWaitHandle EventWaitHandleNew = CreateAndVerifyEventWaitHandle(initialState: true, EventResetMode.AutoReset, name, expectedSecurity, expectedCreatedNew: true);

            Assert.True(EventWaitHandleAcl.TryOpenExisting(name, EventWaitHandleRights.FullControl, out EventWaitHandle EventWaitHandleExisting));
            Assert.NotNull(EventWaitHandleExisting);

            VerifyHandles(EventWaitHandleNew, EventWaitHandleExisting);
            EventWaitHandleSecurity actualSecurity = EventWaitHandleExisting.GetAccessControl();

            VerifyEventWaitHandleSecurity(expectedSecurity, actualSecurity);

            EventWaitHandleExisting.Dispose();
        }