MutexAcl.Create(Boolean, String, Boolean, MutexSecurity) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или создает экземпляр Mutex, позволяя при необходимости указать экземпляр MutexSecurity, чтобы задать его при создании мьютекса.
public:
static System::Threading::Mutex ^ Create(bool initiallyOwned, System::String ^ name, [Runtime::InteropServices::Out] bool % createdNew, System::Security::AccessControl::MutexSecurity ^ mutexSecurity);
public static System.Threading.Mutex Create (bool initiallyOwned, string? name, out bool createdNew, System.Security.AccessControl.MutexSecurity? mutexSecurity);
static member Create : bool * string * bool * System.Security.AccessControl.MutexSecurity -> System.Threading.Mutex
Public Shared Function Create (initiallyOwned As Boolean, name As String, ByRef createdNew As Boolean, mutexSecurity As MutexSecurity) As Mutex
Параметры
- initiallyOwned
- Boolean
Значение true
для предоставления вызывающему потоку изначального владения именованным системным мьютексом, если этот мьютекс создан данным вызовом; в противном случае — значение false
.
- name
- String
Имя, если объект синхронизации должен использоваться совместно с другими процессами. В противном случае — null
или пустая строка. Имя указано с учетом регистра. Символ обратной косой черты (\) зарезервирован и может использоваться только для указания пространства имен. Дополнительные сведения о пространствах имен см. в разделе примечаний. В зависимости от операционной системы могут быть дополнительные ограничения на имя. Например, в операционных системах под управлением Unix имя после исключения пространства имен должно быть допустимым именем файла.
- createdNew
- Boolean
Когда данный метод возвращает значение, этому аргументу всегда задается значение true
, если создается локальный мьютекс (то есть, если name
имеет значение null
или Empty). Если name
имеет допустимое непустое значение, этот аргумент получает значение true
при создании системного мьютекса либо значение false
в случае обнаружения существующего системного мьютекса с таким именем. Этот параметр передается неинициализированным.
- mutexSecurity
- MutexSecurity
Применение необязательной защиты управления доступом для мьютекса.
Возвращаемое значение
Объект, представляющий системный мьютекс, если имя задано, или локальный мьютекс, если имя не задано.
Исключения
Только в .NET Framework. name
превышает значение MAX_PATH (260 символов).
name
недопустим. Это исключение может возникнуть по разным причинам, включая некоторые ограничения, установленные операционной системой (например, в отношении использования неизвестных префиксов или недопустимых символов). Обратите внимание, что в имени и общих префиксах Global\" и "Local\" учитывается регистр.
- или -
Произошла другая ошибка. Дополнительные сведения можно получить с помощью свойства HResult
.
Только в Windows. Для name
указано неизвестное пространство имен. Дополнительные сведения см. в статье Имена объектов.
Слишком длинное значение name
. Ограничения длины могут зависеть от операционной системы или конфигурации.
Не удается создать объект синхронизации с указанным значением для параметра name
. Возможно, другой объект синхронизации имеет такое же имя.
Комментарии
Для name
указания пространства имен может быть задан Global\
префикс или Local\
. При указании Global
пространства имен объект синхронизации может использоваться совместно с любыми процессами в системе. При указании Local
пространства имен, которое также используется по умолчанию, если пространство имен не указано, объект синхронизации может быть совместно использоваться процессами в одном сеансе. В Windows сеанс является сеансом входа, а службы обычно выполняются в другом неинтерактивном сеансе. В операционных системах, подобных Unix, каждая оболочка имеет собственный сеанс. Объекты локальной синхронизации сеанса могут быть подходящими для синхронизации между процессами с отношением "родитель-потомок", где все они выполняются в одном сеансе. Дополнительные сведения об именах объектов синхронизации в Windows см. в разделе Имена объектов.
name
Если предоставляется и объект синхронизации запрошенного типа уже существует в пространстве имен, открывается существующий объект синхронизации. Если объект синхронизации другого типа уже существует в пространстве имен, WaitHandleCannotBeOpenedException
возникает исключение . В противном случае создается новый объект синхронизации.
Внимание!
По умолчанию именованный мьютекс не ограничивается пользователем, который его создал. Другие пользователи могут открывать и использовать мьютекс, в том числе вмешиваться в мьютекс, вводя мьютекс и не выходя из него. Чтобы ограничить доступ для определенных пользователей, можно передать MutexSecurity при создании именованного мьютекса. Избегайте использования именованных мьютексов без ограничений доступа в системах, в которых могут выполняться ненадежные пользователи, выполняющие код.