WaitCommEvent 함수(winbase.h)
지정된 통신 디바이스에 대한 이벤트가 발생할 때까지 기다립니다. 이 함수에서 모니터링하는 이벤트 집합은 디바이스 핸들과 연결된 이벤트 마스크에 포함됩니다.
구문
BOOL WaitCommEvent(
[in] HANDLE hFile,
[out] LPDWORD lpEvtMask,
[in] LPOVERLAPPED lpOverlapped
);
매개 변수
[in] hFile
통신 디바이스에 대한 핸들입니다. CreateFile 함수는 이 핸들을 반환합니다.
[out] lpEvtMask
발생한 이벤트의 형식을 나타내는 마스크를 수신하는 변수에 대한 포인터입니다. 오류가 발생하면 값은 0입니다. 그렇지 않으면 다음 값 중 하나입니다.
값 | 의미 |
---|---|
|
입력에서 중단이 발견되었습니다. |
|
CTS(전송 취소) 신호가 상태를 변경했습니다. |
|
DSR(데이터 세트 준비) 신호가 상태가 변경되었습니다. |
|
줄 상태 오류가 발생했습니다. 줄 상태 오류는 CE_FRAME, CE_OVERRUN 및 CE_RXPARITY. |
|
링 표시기가 감지되었습니다. |
|
RLSD(receive-line-signal-detect) 신호가 변경된 상태입니다. |
|
문자를 받아서 입력 버퍼에 배치했습니다. |
|
이벤트 문자가 수신되어 입력 버퍼에 배치되었습니다. 이벤트 문자는 SetCommState 함수를 사용하여 직렬 포트에 적용되는 디바이스의 DCB 구조에 지정됩니다. |
|
출력 버퍼의 마지막 문자가 전송되었습니다. |
[in] lpOverlapped
OVERLAPPED 구조에 대한 포인터입니다. hFile을 FILE_FLAG_OVERLAPPED 사용하여 연 경우 이 구조체가 필요합니다.
hFile을 FILE_FLAG_OVERLAPPED 사용하여 연 경우 lpOverlapped 매개 변수는 NULL이 아니어야 합니다. 유효한 OVERLAPPED 구조를 가리킵니다. hFile이 FILE_FLAG_OVERLAPPED 사용하여 열렸고 lpOverlapped가 NULL인 경우 함수는 작업이 완료되었음을 잘못 보고할 수 있습니다.
hFile이 FILE_FLAG_OVERLAPPED 사용하여 열렸고 lpOverlapped가 NULL이 아닌 경우 WaitCommEvent는 겹치는 작업으로 수행됩니다. 이 경우 OVERLAPPED 구조체는 CreateEvent 함수를 사용하여 만든 수동 재설정 이벤트 개체에 대한 핸들을 포함해야 합니다.
hFile이 FILE_FLAG_OVERLAPPED 함께 열리지 않은 경우 WaitCommEvent는 지정된 이벤트 중 하나 또는 오류가 발생할 때까지 반환되지 않습니다.
반환 값
함수가 성공하면 반환 값이 0이 아닙니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
WaitCommEvent 함수는 지정된 통신 리소스에 대한 이벤트 집합을 모니터링합니다. 통신 리소스의 현재 이벤트 마스크를 설정하고 쿼리하려면 SetCommMask 및 GetCommMask 함수 를 사용합니다.
겹치는 작업을 즉시 완료할 수 없는 경우 함수는 FALSE 를 반환하고 GetLastError 함수는 백그라운드에서 작업이 실행 중임을 나타내는 ERROR_IO_PENDING 반환합니다. 이 경우 시스템에서는 WAITCommEvent가 반환되기 전에 OVERLAPPED 구조체의 hEvent 멤버를 신호되지 않은 상태로 설정한 다음 지정된 이벤트 중 하나 또는 오류가 발생할 때 신호를 받은 상태로 설정합니다. 호출 프로세스는 대기 함수 중 하나를 사용하여 이벤트 개체의 상태를 확인한 다음 GetOverlappedResult 함수를 사용하여 WaitCommEvent 작업의 결과를 확인할 수 있습니다. GetOverlappedResult 는 작업의 성공 또는 실패를 보고하고 lpEvtMask 매개 변수가 가리키는 변수는 발생한 이벤트를 나타내도록 설정됩니다.
겹치는 WaitCommEvent 작업이 진행 중인 동안 SetCommMask 함수를 사용하여 디바이스 핸들의 이벤트 마스크를 변경하려고 하면 WaitCommEvent가 즉시 반환됩니다. lpEvtMask 매개 변수가 가리키는 변수는 0으로 설정됩니다.
예제
예제는 통신 이벤트 모니터링을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |