Функция OpenSemaphoreW (synchapi.h)

Открывает существующий именованный объект семафора.

Синтаксис

HANDLE OpenSemaphoreW(
  [in] DWORD   dwDesiredAccess,
  [in] BOOL    bInheritHandle,
  [in] LPCWSTR lpName
);

Параметры

[in] dwDesiredAccess

Доступ к объекту семафора. Функция завершается ошибкой, если дескриптор безопасности указанного объекта не разрешает запрошенный доступ для вызывающего процесса. Список прав доступа см. в разделе Безопасность объектов синхронизации и права доступа.

[in] bInheritHandle

Если это значение равно TRUE, процессы, созданные этим процессом, наследуют дескриптор. В противном случае процессы не наследуют этот дескриптор.

[in] lpName

Имя открываемого семафора. Сравнение имен учитывает регистр.

Эта функция может открывать объекты в частном пространстве имен. Дополнительные сведения см. в разделе Пространства имен объектов.

Службы терминалов: Имя может иметь префикс "Global" или "Local" для явного открытия объекта в глобальном пространстве имен или пространстве имен сеанса. Оставшаяся часть имени может содержать любой символ, кроме символа обратной косой черты (\). Дополнительные сведения см. в разделе Пространства имен объектов ядра.

Примечание Быстрое переключение пользователей реализуется с помощью сеансов служб терминалов. Первый пользователь для входа использует сеанс 0, следующий пользователь для входа использует сеанс 1 и т. д. Имена объектов ядра должны соответствовать рекомендациям, описанным для служб терминалов, чтобы приложения могли поддерживать нескольких пользователей.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение является дескриптором для объекта семафора.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Функция OpenSemaphore позволяет нескольким процессам открывать дескриптор одного и того же объекта семафора. Функция выполняется успешно, только если какой-то процесс уже создал семафор с помощью функции CreateSemaphore . Вызывающий процесс может использовать возвращенный дескриптор в любой функции, требующей дескриптора для объекта семафора, например функций ожидания, с учетом ограничений доступа, указанных в параметре dwDesiredAccess .

Дескриптор можно дублировать с помощью функции DuplicateHandle . Используйте функцию CloseHandle , чтобы закрыть дескриптор. Система автоматически закрывает дескриптор при завершении процесса. Объект семафора уничтожается при закрытии последнего дескриптора.

Требования

   
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header synchapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CloseHandle

CreateSemaphore

DuplicateHandle

Имена объектов

ReleaseSemaphore

Объекты семафора

Функции синхронизации