OpenMutexW 함수(synchapi.h)

명명된 기존 뮤텍스 개체를 엽니다.

구문

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

매개 변수

[in] dwDesiredAccess

뮤텍스 개체에 대한 액세스 권한입니다. 뮤텍스를 사용하려면 SYNCHRONIZE 액세스 권한만 필요합니다. 뮤텍스의 보안을 변경하려면 MUTEX_ALL_ACCESS 지정합니다. 지정된 개체의 보안 설명자가 호출 프로세스에 대해 요청된 액세스를 허용하지 않으면 함수가 실패합니다. 액세스 권한 목록은 동기화 개체 보안 및 액세스 권한을 참조하세요.

[in] bInheritHandle

이 값이 TRUE이면 이 프로세스에서 만든 프로세스가 핸들을 상속합니다. 그렇지 않으면 프로세스에서 이 핸들을 상속하지 않습니다.

[in] lpName

열 뮤텍스의 이름입니다. 이름 비교는 대/소문자를 구분합니다.

이 함수는 프라이빗 네임스페이스에서 개체를 열 수 있습니다. 자세한 내용은 개체 네임스페이스를 참조하세요.

터미널 서비스: 이름에는 전역 또는 세션 네임스페이스에서 개체를 명시적으로 여는 "전역" 또는 "로컬" 접두사를 사용할 수 있습니다. 이름의 나머지 부분에는 백슬래시 문자(\)를 제외한 모든 문자가 포함될 수 있습니다. 자세한 내용은 커널 개체 네임스페이스를 참조하세요.

참고 빠른 사용자 전환은 터미널 서비스 세션을 사용하여 구현됩니다. 로그온하는 첫 번째 사용자는 세션 0을 사용하고, 로그온할 다음 사용자는 세션 1 등을 사용합니다. 커널 개체 이름은 애플리케이션이 여러 사용자를 지원할 수 있도록 터미널 서비스에 대해 설명된 지침을 따라야 합니다.

반환 값

함수가 성공하면 반환 값은 뮤텍스 개체에 대한 핸들입니다.

함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

명명된 뮤텍스가 없으면 함수가 실패하고 GetLastError가ERROR_FILE_NOT_FOUND 반환합니다.

설명

OpenMutex 함수를 사용하면 여러 프로세스가 동일한 뮤텍스 개체의 핸들을 열 수 있습니다. 일부 프로세스에서 CreateMutex 함수를 사용하여 뮤텍스를 이미 만든 경우에만 함수가 성공합니다. 호출 프로세스는 dwDesiredAccess 매개 변수에 지정된 액세스 제한에 따라 대기 함수와 같은 뮤텍스 개체에 대한 핸들이 필요한 모든 함수에서 반환된 핸들을 사용할 수 있습니다.

DuplicateHandle 함수를 사용하여 핸들을 복제할 수 있습니다. CloseHandle 함수를 사용하여 핸들을 닫습니다. 시스템은 프로세스가 종료되면 핸들을 자동으로 닫습니다. 마지막 핸들이 닫혔을 때 뮤텍스 개체가 제거됩니다.

다중 스레드 애플리케이션이 명명된 뮤텍스 개체를 반복적으로 만들고 열고 닫아야 하는 경우 경합 상태가 발생할 수 있습니다. 이 경우 CreateMutex가 있는 경우 뮤텍스를 열고 없는 경우 만들기 때문에 OpenMutex 대신 CreateMutex를 사용하는 것이 좋습니다.

예제

OpenMutex를 사용하는 예제는 명명된 개체 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 synchapi.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

CloseHandle

CreateMutex

CreateProcess

DuplicateHandle

뮤텍스 개체

개체 이름

ReleaseMutex

동기화 함수