DWORD WINAPI WaitForSingleObject(

  __in  HANDLE hHandle,            //오브젝트 핸들

  __in  DWORD dwMilliseconds    // 타임아웃 시간

);


쉽게말해 어떤 오브젝트가 시그널 상태가 되거나 타임아웃이 되면 제어를 돌려준다.


이게 무슨말이냐면 WaitForSingleObject는 지정한 오브젝트의 현재 상태를 채크를 한다.

그 오브젝트가 비시그널 상태일 때는 호출한 스레드는 대기상태가 되고

오브젝트가 시그널 상태가 되거나 타임아웃 시간이 경과하는 것을 기다린다.


파라미터

hHandle

오브젝트의 핸들을 지정한다.

핸들을 지정할 수 있는 함수의 해설을 참조


핸들이 대기 상태로 있을때에는 그 핸들을 없앴을 경우 그 함수의 동작은 정의되지않는다.

(If this handle is closed while the wait is still pending, the function's behavior is undefined. : 동작을 안한다는 이야기인가? -.-)

Windows NT/2000:이 핸들에 SYNCHRONIZE 억세스 권을 할당해야만 된다. 상세한 내용은  MSDN 라이브러리의 「Standard Access Rights」를 참조


dwMilliseconds

타임아웃 시간을 밀리초(ms)단위로 지정한다.

타임아웃 시간을 경과하면 오브젝트가 비시그널 상태에 있더라도 제어권을 돌려준다.(WaitForSingleObject함수에서 더 이상 대기하지않는다.)

0으로 지정하면 이 함수는 지정된 오브젝트의 상태를 확인하고 바로 다음 행을 실행한다.

INFINITE를 지정하면 오브젝트가 시그널 상태가 될때까지 기다린다.





대강적으로 어떤 스레드를 불러오고 그 스레드가 종료될때까지 기다리는것? 인 것 같다.

'Programming > WinAPI' 카테고리의 다른 글

악성코드에 자주 사용되는 함수목록  (0) 2017.03.04
WinAPI WinMain과 윈도우 클래스  (0) 2017.02.08
WinAPI 핸들에 대한 이해  (0) 2017.02.08
API란?  (0) 2017.02.08
WinAPI 윈도우의 특징  (0) 2017.02.08

+ Recent posts