示例#1
0
        public void Mutex_OpenExisting_PathNotFound()
        {
            string name = @"global\foo";

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

            Assert.False(MutexAcl.TryOpenExisting(name, MutexRights.FullControl, out _));
        }
示例#2
0
        public void Mutex_OpenExisting_NameInvalid()
        {
            string name = '\0'.ToString();

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

            Assert.False(MutexAcl.TryOpenExisting(name, MutexRights.FullControl, out _));
        }
示例#3
0
        public void Mutex_OpenExisting_NameNotFound()
        {
            string name = "ThisShouldNotExist";

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

            Assert.False(MutexAcl.TryOpenExisting(name, MutexRights.FullControl, out _));
        }
示例#4
0
        public void Mutex_OpenExisting_EmptyName()
        {
            Assert.Throws <ArgumentException>(() =>
            {
                MutexAcl.OpenExisting(string.Empty, MutexRights.FullControl).Dispose();
            });

            Assert.Throws <ArgumentException>(() =>
            {
                MutexAcl.TryOpenExisting(string.Empty, MutexRights.FullControl, out _);
            });
        }
示例#5
0
        public void Mutex_OpenExisting_NullName()
        {
            Assert.Throws <ArgumentNullException>(() =>
            {
                MutexAcl.OpenExisting(null, MutexRights.FullControl).Dispose();
            });

            Assert.Throws <ArgumentNullException>(() =>
            {
                MutexAcl.TryOpenExisting(null, MutexRights.FullControl, out _);
            });
        }
示例#6
0
        public void Mutex_OpenExisting_BadPathName()
        {
            string name = @"\\?\Path";

            Assert.Throws <System.IO.IOException>(() =>
            {
                MutexAcl.OpenExisting(name, MutexRights.FullControl).Dispose();
            });
            Assert.Throws <System.IO.IOException>(() =>
            {
                MutexAcl.TryOpenExisting(name, MutexRights.FullControl, out _);
            });
        }
示例#7
0
        public void Mutex_OpenExisting()
        {
            string        name             = GetRandomName();
            MutexSecurity expectedSecurity = GetMutexSecurity(WellKnownSidType.BuiltinUsersSid, MutexRights.FullControl, AccessControlType.Allow);

            using Mutex mutexNew = CreateAndVerifyMutex(initiallyOwned: true, name, expectedSecurity, expectedCreatedNew: true);

            using Mutex mutexExisting = MutexAcl.OpenExisting(name, MutexRights.FullControl);

            VerifyHandles(mutexNew, mutexExisting);
            MutexSecurity actualSecurity = mutexExisting.GetAccessControl();

            VerifyMutexSecurity(expectedSecurity, actualSecurity);
        }