MsgWaitForMultipleObjects 함수(winuser.h)
지정된 개체 중 하나 또는 전부가 신호 상태이거나 시간 제한 간격이 경과할 때까지 기다립니다. 개체에는 dwWakeMask 매개 변수를 사용하여 지정하는 입력 이벤트 개체가 포함될 수 있습니다.
경고 대기 상태를 입력하려면 MsgWaitForMultipleObjectsEx 함수를 사용합니다.
통사론
DWORD MsgWaitForMultipleObjects(
[in] DWORD nCount,
[in] const HANDLE *pHandles,
[in] BOOL fWaitAll,
[in] DWORD dwMilliseconds,
[in] DWORD dwWakeMask
);
매개 변수
[in] nCount
pHandles가리키는 배열의 개체 핸들 수입니다. 최대 개체 핸들 수는 MAXIMUM_WAIT_OBJECTS 1을 뺀 값입니다. 이 매개 변수의 값이 0이면 함수는 입력 이벤트만 기다립니다.
[in] pHandles
개체 핸들의 배열입니다. 핸들을 지정할 수 있는 개체 형식 목록은 다음 주의 섹션을 참조하세요. 배열에는 다양한 형식의 개체 핸들이 포함될 수 있습니다. 동일한 핸들의 여러 복사본을 포함하지 않을 수 있습니다.
대기가 보류 중인 동안 이러한 핸들 중 하나가 닫혀 있으면 함수의 동작이 정의되지 않습니다.
핸들에는 SYNCHRONIZE 액세스 권한이 있어야 합니다. 자세한 내용은 표준 액세스 권한
[in] fWaitAll
이 매개 변수가 TRUE
[in] dwMilliseconds
시간 제한 간격(밀리초)입니다. 0이 아닌 값을 지정하면 지정된 개체의 신호가 전송되거나 간격이 경과할 때까지 함수가 대기합니다.
dwMilliseconds 0이면 지정된 개체가 신호를 받지 않으면 함수가 대기 상태로 들어가지 않습니다. 항상 즉시 반환됩니다.
Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 및 Windows Server 2008 R2:dwMilliseconds 값에는 저전력 상태에서 소요된 시간이 포함됩니다. 예를 들어 컴퓨터가 절전 모드인 동안 시간 제한은 계속 카운트다운됩니다.
Windows 8 이상 Windows Server 2012 이상:dwMilliseconds 값에는 저전력 상태에서 소요된 시간이 포함되지 않습니다. 예를 들어 컴퓨터가 절전 모드인 동안 시간 제한은 계속 카운트다운되지 않습니다.
[in] dwWakeMask
입력 이벤트 개체 핸들을 개체 핸들의 배열에 추가할 입력 형식입니다. 이 매개 변수는 GetQueueStatus플래그 매개 변수에 나열된 값의 조합일 수 있습니다.
반환 값
함수가 성공하면 반환 값은 함수가 반환된 이벤트를 나타냅니다. 다음 값 중 하나일 수 있습니다. (WAIT_OBJECT_0 0으로 정의되고 WAIT_ABANDONED_0 0x00000080L로 정의됩니다.
반환 코드/값 | 묘사 |
---|---|
|
|
|
dwWakeMask 매개 변수에 지정된 형식의 새 입력은 스레드의 입력 큐에서 사용할 수 있습니다. 이 값은 포그라운드 활성화와 같은 스레드의 작업이 필요한 시스템 이벤트가 발생할 때도 반환됩니다. 따라서 적절한 입력을 사용할 수 없고 dwWakeMask 0으로 설정된 경우에도 MsgWaitForMultipleObjects 반환할 수 있습니다. 이 경우 |
|
뮤텍스가 영구 상태 정보를 보호하는 경우 일관성을 확인해야 합니다. |
|
시간 제한 간격이 경과하고 bWaitAll 및 dwWakeMask 매개 변수에 지정된 조건이 충족되지 않았습니다. |
|
함수가 실패했습니다. 확장 오류 정보를 얻으려면 GetLastError호출합니다. |
발언
MsgWaitForMultipleObjects 함수는 대기 조건이 충족되었는지 여부를 결정합니다. 조건이 충족되지 않으면 대기 조건의 조건이 충족되거나 제한 시간 간격이 경과할 때까지 호출 스레드가 대기 상태로 전환됩니다.
스레드가 큐를 확인하기 위해 함수를 호출한 후 메시지 큐에 지정된 형식의 읽지 않은 입력이 있는 경우 msgWaitForMultipleObjects 반환되지 않습니다. 이는
이 함수는 일부 유형의 동기화 개체의 상태를 수정합니다. 수정은 신호 상태가 함수를 반환하게 한 개체 또는 개체에 대해서만 발생합니다. 예를 들어 세마포 개체의 수는 1씩 감소합니다. 자세한 내용은 개별 동기화 개체에 대한 설명서를 참조하세요.
MsgWaitForMultipleObjects 함수는 pHandles 배열에서 다음 개체 형식의 핸들을 지정할 수 있습니다.
- 변경 알림
- 콘솔 입력
- 이벤트
- 메모리 리소스 알림
- 뮤텍스 (뮤텍스)
- 프로세스
- 세마포
- 스레드
- 대기 가능한 타이머
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winuser.h(Windows.h 포함) |
라이브러리 | User32.lib |
DLL | User32.dll |
참고 항목
동기화 함수
대기 함수