WaitCommEvent 함수(winbase.h)

지정된 통신 디바이스에 대한 이벤트가 발생할 때까지 기다립니다. 이 함수에서 모니터링하는 이벤트 집합은 디바이스 핸들과 연결된 이벤트 마스크에 포함됩니다.

구문

BOOL WaitCommEvent(
  [in]  HANDLE       hFile,
  [out] LPDWORD      lpEvtMask,
  [in]  LPOVERLAPPED lpOverlapped
);

매개 변수

[in] hFile

통신 디바이스에 대한 핸들입니다. CreateFile 함수는 이 핸들을 반환합니다.

[out] lpEvtMask

발생한 이벤트의 형식을 나타내는 마스크를 수신하는 변수에 대한 포인터입니다. 오류가 발생하면 값은 0입니다. 그렇지 않으면 다음 값 중 하나입니다.

의미
EV_BREAK
0x0040
입력에서 중단이 발견되었습니다.
EV_CTS
0x0008
CTS(전송 취소) 신호가 상태를 변경했습니다.
EV_DSR
0x0010
DSR(데이터 세트 준비) 신호가 상태가 변경되었습니다.
EV_ERR
0x0080
줄 상태 오류가 발생했습니다. 줄 상태 오류는 CE_FRAME, CE_OVERRUNCE_RXPARITY.
EV_RING
0x0100
링 표시기가 감지되었습니다.
EV_RLSD
0x0020
RLSD(receive-line-signal-detect) 신호가 변경된 상태입니다.
EV_RXCHAR
0x0001
문자를 받아서 입력 버퍼에 배치했습니다.
EV_RXFLAG
0x0002
이벤트 문자가 수신되어 입력 버퍼에 배치되었습니다. 이벤트 문자는 SetCommState 함수를 사용하여 직렬 포트에 적용되는 디바이스의 DCB 구조에 지정됩니다.
EV_TXEMPTY
0x0004
출력 버퍼의 마지막 문자가 전송되었습니다.

[in] lpOverlapped

OVERLAPPED 구조에 대한 포인터입니다. hFileFILE_FLAG_OVERLAPPED 사용하여 연 경우 이 구조체가 필요합니다.

hFileFILE_FLAG_OVERLAPPED 사용하여 연 경우 lpOverlapped 매개 변수는 NULL이 아니어야 합니다. 유효한 OVERLAPPED 구조를 가리킵니다. hFileFILE_FLAG_OVERLAPPED 사용하여 열렸고 lpOverlappedNULL인 경우 함수는 작업이 완료되었음을 잘못 보고할 수 있습니다.

hFileFILE_FLAG_OVERLAPPED 사용하여 열렸고 lpOverlappedNULL이 아닌 경우 WaitCommEvent는 겹치는 작업으로 수행됩니다. 이 경우 OVERLAPPED 구조체는 CreateEvent 함수를 사용하여 만든 수동 재설정 이벤트 개체에 대한 핸들을 포함해야 합니다.

hFileFILE_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

참고 항목

Communications 함수

통신 리소스

CreateFile

DCB

GetCommMask

GetOverlappedResult

OVERLAPPED

SetCommMask

SetCommState