읽기 및 쓰기 작업
Windows는 직렬 통신 리소스에 대한 동기 및 비동기(겹치는) 파일 I/O 작업을 모두 지원합니다. 겹치는 작업을 사용하면 백그라운드에서 작업이 실행되는 동안 호출 스레드가 다른 작업을 수행할 수 있습니다. 스레드는 ReadFile 또는 ReadFileEx 함수를 사용하여 통신 리소스에서 읽고, WriteFile 또는 WriteFileEx 함수 를 사용하여 통신 리소스에 씁니다. ReadFile 및 WriteFile 은 동기적으로 또는 비동기적으로 수행할 수 있습니다. ReadFileEx 및 WriteFileEx 는 비동기적으로만 수행할 수 있습니다.
이러한 읽기 및 쓰기 함수의 동작은 함수가 겹치는 작업으로 실행되는지 여부, 제한 시간 매개 변수가 핸들과 연결되어 있는지 여부 및 흐름 제어 매개 변수가 핸들과 연결되어 있는지 여부에 의해 영향을 받습니다.
스레드는 출력 버퍼의 보류 중인 데이터보다 먼저 지정된 문자를 전송하는 TransmitCommChar 함수를 사용하여 통신 리소스에 쓸 수도 있습니다. 이 함수는 우선 순위가 높은 신호 문자를 수신 시스템으로 전송하는 데 유용합니다. 우선 순위가 높은 문자의 전송은 여전히 흐름 제어 및 쓰기 시간 제한의 적용을 받으며 작업은 동기적으로 수행됩니다.
스레드는 PurgeComm 함수를 사용하여 디바이스의 출력 또는 입력 버퍼에 있는 모든 문자를 삭제할 수 있습니다. 또한 PurgeComm 은 작업이 완료되지 않은 경우에도 보류 중인 읽기 또는 쓰기 작업을 종료할 수 있습니다. 스레드가 PurgeComm 을 사용하여 출력 버퍼를 플러시하는 경우 삭제된 문자는 전송되지 않습니다. 콘텐츠가 전송되도록 하면서 출력 버퍼를 비우기 위해 스레드는 FlushFileBuffers 함수(동기 작업)를 호출할 수 있습니다. 그러나 FlushFileBuffers 는 흐름 제어가 적용되지만 시간 초과를 작성할 수 없으며 보류 중인 모든 쓰기 작업이 전송될 때까지 반환되지 않습니다.