CoWaitForMultipleHandles 함수(combaseapi.h)

지정된 핸들이 신호를 받을 때까지 또는 지정된 시간 제한 기간이 경과될 때까지 기다립니다.

구문

HRESULT CoWaitForMultipleHandles(
  [in]  DWORD    dwFlags,
  [in]  DWORD    dwTimeout,
  [in]  ULONG    cHandles,
  [in]  LPHANDLE pHandles,
  [out] LPDWORD  lpdwindex
);

매개 변수

[in] dwFlags

대기 옵션입니다. 가능한 값은 COWAIT_FLAGS 열거형에서 가져옵니다.

[in] dwTimeout

밀리초 단위의 제한 시간입니다.

[in] cHandles

pHandles 배열의 요소 수입니다.

[in] pHandles

핸들 배열입니다.

[out] lpdwindex

반환된 상태 S_OK 함수가 반환된 이벤트를 나타내는 값을 수신하는 변수에 대한 포인터입니다. 이 값은 일반적으로 신호를 받은 핸들에 대한 pHandles 의 인덱스입니다.

pHandles에 뮤텍스 개체에 대한 핸들이 하나 이상 포함된 경우 WAIT_ABANDONED_0 사이의 값(WAIT_ABANDONED_0 + nCount - 1)은 중단된 뮤텍스에 대한 pHandles로 인덱스를 나타냅니다.

COWAIT_ALERTABLE 플래그가 dwFlags로 설정된 경우 WAIT_IO_COMPLETION 값은 스레드에 큐에 대기 중인 하나 이상의 APC(사용자 모드 비동기 프로시저 호출)로 대기가 종료되었음을 나타냅니다.

자세한 내용은 WaitForMultipleObjectsEx 를 참조하세요.

반환 값

이 함수는 다음 값을 반환할 수 있습니다.

참고COWAIT_ALERTABLE 플래그가 dwFlags로 설정되거나 pHandles에 뮤텍스 개체에 대한 하나 이상의 핸들이 포함된 경우 CoWaitForMultipleHandles의 반환 값은 비결정적일 수 있습니다. 권장되는 해결 방법은 CoWaitForMultipleHandles 전에 SetLastError(ERROR_SUCCESS)를 호출하는 것입니다.
 
반환 코드 설명
S_OK
필요한 핸들 또는 핸들이 신호를 받았습니다.
E_INVALIDARG
pHandlesNULL이거나, lpdwindexNULL이거나, dwFlagsCOWAIT_FLAGS 열거형의 값이 아니었습니다.
RPC_E_NO_SYNC
pHandles 값은 0입니다.
RPC_S_CALLPENDING
필요한 핸들 또는 핸들이 신호를 수신하기 전에 경과된 시간 제한 기간입니다.

설명

dwFlags 매개 변수에 설정된 플래그에 따라 CoWaitForMultipleHandles 는 다음 이벤트 중 하나가 발생할 때까지 호출 스레드를 차단합니다.

  • 핸들 중 하나 또는 전부가 신호를 수신합니다. 뮤텍스 개체의 경우 뮤텍스가 중단되어 이 조건도 충족됩니다.
  • APC(비동기 프로시저 호출)가 QueueUserAPC 함수를 호출하여 호출 스레드에 큐에 대기되었습니다.
  • 시간 제한 기간이 만료됩니다.
호출자가 단일 스레드 아파트에 있는 경우 CoWaitForMultipleHandles 는 COM 모달 루프를 입력하고 스레드의 메시지 루프는 스레드의 메시지 필터를 사용하여 메시지를 계속 디스패치합니다. 스레드에 대해 등록된 메시지 필터가 없으면 기본 COM 메시지 처리가 사용됩니다.

호출 스레드가 MTA(다중 스레드 아파트)에 있는 경우 CoWaitForMultipleHandlesWaitForMultipleObjectsEx 함수를 호출합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 combaseapi.h(Objbase.h 포함)
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

COWAIT_FLAGS