선 밖에 선 자유인

커널 오브젝트의 상태 확인 함수 본문

IT/System & Network

커널 오브젝트의 상태 확인 함수

Hotman 2011. 1. 21. 12:44

1. WaitForSingleObject()

 DWORD WaitForSingleObject(
       HANDLE hHandle,              // 상태 확인을 원하는 커널 오브젝트
       DWORD dwMilliseconds     // 커널 오브젝트가 Signaled 상태가 될 때까지 기다리는 시간
 );

에러 발생 시 WAIT_FAILED 리턴

WaitForSingleObject 함수가 반환하는 상황은 다양하다. 함수 호출이 완료된 후에 반환값을 확인해야 한다.

 Value   의미
 WAIT_OBJECT_0  커널 오브젝트가 Signaled 상태가 되었을 때
 반환되는 값
 WAIT_TIMEOUT  커널 오브젝트가 Signaled 상태가 되지 않고, 
 dwMilliseconds 인자를 통해서 설정된 시간이 다 된
 경우에 반환되는 값
 WAIT_ABANDONED  소유 관계와 관련하여 함수가 정상적이지 못한 오류 발
 생에 의해서 반환하는 경우에 반환되는 값


2. WaitForMultipleObject()

 DWORD WaitForMultipleObject(
      DWORD nCount,                    // 배열에 저장되어 있는 핸들 개수를 전달
      const HANDLE* lpHandles,     // 핸들을 저장하고 있는 배열의 주소 정보 전달,
      BOOL bWaitAll,                      // 관찰 대상이 모두 Signaled가 되기를 기다리고자 하면 (TRUE)
                                                  // 하나라도 Signaled 상태가 되면 반환하기를 원하면 (FALSE)
      DWORD dwMilliseconds          // 타임 아웃 설정
 );

에러 발생 시 WAIT_FAILED 리턴


** 두 함수는 커널 오브젝트를 감시하는 역할을 한다. 커널 오브젝트가 Non-Signaled 상태에 있는 때에는 함수를
     반환하지 않고 블로킹 상태에 있다가 함수가 Signaled 상태가 되면 함수를 빠져나온다.

 
Comments