관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

MsgWaitForMultipleObjects 본문

API 관련/Win32 API 함수

MsgWaitForMultipleObjects

님투 2007. 11. 8. 23:09
반응형

MsgWaitForMultipleObjects

지정한 커넬 오브젝트 중1개 또는 그러한 모든 것이 시그널 상태가 되는지, 스렛드의 소유하는 윈도우로 지정한 타입의 메세지가 보내지는지, 지정한 타임 아웃 시간이 경과할 때까지 스렛드를 sleeve 시킵니다.

DWORD WaitForMultipleObjects(
    DWORD  nCount,          // 체크하는 오브젝트의 수
    CONST HANDLE *pHandles, // 오브젝트 핸들의 배열
    BOOL   bWaitAll,        // 1개인가 모두인가의 플래그
    DWORD  dwMilliseconds,  // 타임 아웃 시간
    DWORD  dwMakeMask       // 메세지의 타입을 나타내는 플래그
);

USER32.DLL

인수

nCount

pHandles 파라미터가 지시하는 배열의 커넬 오브젝트의 핸들의 수를 지정합니다.지정할 수 있는 오브젝트의 최대수는 64 (MAXIMUM_WAIT_OBJECTS) - 1 개입니다.

pHandles

커넬 오브젝트의 핸들을 격납한 배열 변수의 주소를 지정합니다.같은 오브젝트가 여러 차례 지정되면 에러가 됩니다.

대기가 미해결 상태로 이러한 핸들의1개가 클로우즈 되었을 경우의 함수의 동작은 정의되고 있지 않습니다.

Windows NT/2000/XP: 오브젝트의 핸들은 SYNCHRONIZE 액세스를 가지고 있지 않으면 안됩니다.

bWaitAll

리스트내의 모든 오브젝트를 기다리는지, 어떤 것인가1개만을 기다리는지를 지정합니다. 1 (TRUE) (을)를 지정하면, 모든 오브젝트가 시그널 상태가 되는 것을 기다립니다. 0 (FALSE) (을)를 지정하면, 어떤 것인가1개가 시그널 상태가 되는 것을 기다립니다.

dwMilliseconds

대기 시간을 밀리 세컨드 단위로 지정합니다. 0 (을)를 지정하면, 오브젝트가 시그널 상태인지 어떤지를 조사하자마자 제어를 돌려줍니다. 0xFFFFFFFF (INFINITE) (을)를 지정하면, 오브젝트가 시그널 상태가 될 때까지 무한하게 계속 기다립니다.

dwMakeMask

어느 타입의 메세지가 메시지 큐에 세트 되면 스렛드의 실행을 재개시키는지를 지정합니다.이하의 값의 편성으로 지정합니다.

큐내의 메세지
0x0001 (QS_KEY) WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP 의 어떤 것인가
0x0002 (QS_MOUSEMOVE) WM_MOUSEMOVE
0x0004 (QS_MOUSEBUTTON) WM_?BUTTON***
(? 하 L, M, R 의 어떤 것인가.*** 하 DOWN, UP, DBLCLK 의 어떤 것인가)
0x0008 (QS_POSTMESSAGE) 포스트된 메세지(하드웨어 입력 이벤트 이외)
0x0010 (QS_TIMER) WM_TIMER
0x0020 (QS_PAINT) WM_PAINT
0x0040 (QS_SENDMESSAGE) 다른 스렛드, 프로세스로부터 보내져 온 메세지
0x0080 (QS_HOTKEY) WM_HOTKEY
0x0006 (QS_MOUSE) QS_MOUSEMOVE | QS_MOUSEBUTTON 에 동일하다
0x0007 (QS_INPUT) QS_MOUSE | QS_KEY 에 동일하다
0x00BF (QS_ALLEVENTS) QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY 에 동일하다
0x00FF (QS_ALLINPUT) QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE 에 동일하다

반환값

이하의 값의 어느쪽이든을 돌려줍니다.

0x00000000 (WAIT_OBJECT_0) (으)로부터 (nCount - 1) 까지

전오브젝트를 기다리고 있는 경우에는, 모든 오브젝트가 시그널 상태가 된 것을 나타내 보입니다.임의의 오브젝트를 기다리고 있는 경우에는, 시그널 상태가 된 오브젝트 핸들의, pHandles 배열내에서의 인덱스를 나타냅니다.

nCount

dwMakeMask 파라미터로 지정된 형태의 새로운 메세지가 스렛드 입력 큐로부터 얻을 수 있게 된 것을 나타내 보입니다.

0x00000080 (WAIT_ABANDONED) (으)로부터 (WAIT_ABANDONED + nCount - 1) 까지

전오브젝트를 기다리고 있는 경우에는, 모든 오브젝트가 시그널 상태가 되어, 그 중에 방폐되었기 때문에 시그널 상태가 된 뮤텍스가 포함되어 있는 것을 나타냅니다.임의의 오브젝트를 기다리고 있는 경우, (반환값 - WAIT_ABANDONED) (은)는, 방폐되었기 때문에 시그널 상태가 된 뮤텍스 오브젝트의 핸들의 pHandles 배열내에서의 인덱스를 나타냅니다.

0x00000102 (WAIT_TIMEOUT)

타임 아웃 시간이 경과한 것을 나타내 보입니다.

0xFFFFFFFF (WAIT_FAILED)

에러가 발생한 것을 나타내 보입니다.확장 에러 정보를 취득하려면 , GetLastError 함수를 사용합니다.

해설

이 함수의 pHandles 파라미터가 가리키는 배열에는, 이하의 오브젝트의 핸들을 지정할 수 있습니다.

  • 파일 변경 통지
  • 콘솔 입력
  • 이벤트
  • 작업
  • 뮤텍스
  • 프로세스
  • semaphore
  • 스렛드
  • 웨이타브르타이마

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

반응형

'API 관련 > Win32 API 함수' 카테고리의 다른 글

OpenMutex(A)  (0) 2007.11.08
MultiByteToWideChar  (0) 2007.11.08
MoveWindow  (0) 2007.11.08
midiStreamOpen  (0) 2007.11.08
midiOutShortMsg  (0) 2007.11.08
Comments