2011-03-10 3 views
1

VC++ 응용 프로그램을 작성하고 있습니다. 논쟁을 위해서 ResetEvent API가 실패 할 수있는 것은 무엇입니까? Microsoft 문서는 이에 대해 명확하지 않습니다. 감사.ResetEvent API가 실패 할 수있는 원인은 무엇입니까?

+0

잘못된 핸들입니까? GetLastError는 뭐라고 말합니까? – Erik

+0

그게 무슨 가치가 있는지, 나는 이것에 대한 문서가 분명하다고 말할 수있다. 이벤트 객체에 대한 핸들을 전달해야하며 해당 객체에는 충분한 액세스 권한이 있어야한다고 명시되어 있습니다. 일단 그렇게하면 성공해야한다고 생각합니다. –

답변

3

일반적으로 잘못된 핸들이 있으면이 오류가 발생합니다.

  1. 핸들을 다른 프로세스에 의해 폐쇄 또는 '외설 일에 대한 핸들을 전달 ResetEvent()
  2. 에 gobbledy - 노랭을 통과 조기
  3. 스레드 : 잘못된 핸들은 다시 발생할 수있다 심지어는

숫자 1은 종종 DuplicateHandle()을 호출하여 핸들의 복사본을 만들어야 피할 수 있습니다.

일반적으로 GetLastError()는 문제의 원인을 정확히 알려주거나 적어도 방향을 알려줍니다.

2

Windows 소스에 액세스하지 않고서는 추측 할 수 없습니다. 여기에 내 생각 엔 잘못 될 수 있습니다 :

  • 핸들은 이벤트 객체에 대한 유효한 핸들이 아닙니다.
  • 핸들에 필요한 액세스 권한이 없습니다. 설명서에는 핸들에 EVENT_MODIFY_STATE 액세스 권한이 있어야한다고 나와 있습니다.
  • OS의 메모리가 부족하거나 다른 심각한 오류가 있습니다.

WINE 소스를 읽는 것은 다른 명시 적 오류 모드를 드러내지 않습니다.

관련 문제