/*
CreateMutex(LPSECURITY_ATTRIBUTE lpMutexAttribute, BOOL bInitionOwner, LPCSTR lpName)입니다.

첫번째 인수는 보안속성을 말하는데 커널객체는 프로세스 한정적이기 때문에
타 프로세스가 보안상의 권리가 있지 않는한 프로세스에 접근할수 없습니다.
여기서는 보통 NULL로 지정합니다.

두번째 인수는 뮤텍스를 생성함과 동시에 소유할것인가 여부인데 여기서는 TRUE겠지요,
마지막으로 뮤텍스의 이름을 지정하는 데 이것은 프로세스간에 뮤텍스를 공유할때에 사용됩니다.
이 뮤텍스의 이름만 안다면 다른프로세스가 OpenMutex라는 함수로 핸들을 얻어올 수 있습니다.
물론 보안속성이 NULL일때 가능하겠지요..

그리고 생성한 mutex를 파괴할 때에는 ReleaseMutex(HANDLE hMutex)를 사용하여 비신호상태인 뮤텍스를 다시 신호상태로 복귀시킵니다.
자 이제 한번 만들어볼까요..
아주 간단합니다.
*/


// 인스턴트를 초기화 하는 루틴에서..[ InitInstance() ]

HANDLE m_hMutex;
m_hMutex = CreateMutex(NULL, TRUE, "TEST");
if( GetLastError() == ERROR_ALREADY_EXISTS )
{
  closeHandle(m_hMutex);
  return FALSE;
}

// 그리고 소멸자에서..
ReleaseMutex(m_hMutex);

/*
하시면 되겠지여..
그럼 CreateMutex의 세번째 인자인 스트링으로 뮤텍스를 구분하며
똑같은 뮤텍스가 실행되려할때 블럭된 뮤텍스에 의해서 똑같은 프로세스가 중복실행되는 것을 방지할 수 있습니다.

  참조 : Windows API 완전정복
  -ikehood-
*/
 
 
2006/05/13 23:20 2006/05/13 23:20

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요