IOCTL_SERIAL_PURGE IOCTL(ntddser.h)
IOCTL_SERIAL_PURGE 요청은 지정된 요청을 취소하고 지정된 버퍼에서 데이터를 삭제합니다. 제거 요청을 사용하여 모든 읽기 요청 및 쓰기 요청을 취소하고 수신 버퍼 및 전송 버퍼에서 모든 데이터를 삭제할 수 있습니다.
제거 요청이 완료되었다고 해서 제거 요청에 의해 취소된 요청이 완료되었음을 의미하지는 않습니다. 클라이언트는 클라이언트가 해당 IRP를 해제하거나 다시 사용하기 전에 제거된 요청이 완료되었는지 확인해야 합니다.
주 코드
입력 버퍼
AssociatedIrp.SystemBuffer 멤버는 제거 마스크입력하는 데 사용되는 클라이언트 할당 ULONG을 가리킵니다. 클라이언트는 제거 마스크를 다음 제거 플래그 중 하나 이상의 비트 OR로 설정합니다.
SERIAL_PURGE_RXABORT
-
모든 읽기(IRP_MJ_READ) 요청을 제거합니다.
SERIAL_PURGE_RXCLEAR
-
수신 버퍼가 있는 경우 제거합니다.
SERIAL_PURGE_TXABORT
-
모든 쓰기(IRP_MJ_WRITE) 요청을 제거합니다.
SERIAL_PURGE_TXCLEAR
-
전송 버퍼가 있는 경우 제거합니다.
입력 버퍼 길이
Parameters.DeviceIoControl.InputBufferLength 멤버는 ULONG의 크기(바이트)로 설정됩니다.
출력 버퍼
없음.
출력 버퍼 길이
없음.
상태 블록
요청이 성공하면 Information 멤버가 ULONG의 크기(바이트)로 설정됩니다. 그렇지 않으면 Information 멤버가 0으로 설정됩니다.
상태 멤버는 직렬 디바이스 제어 요청 대한제네릭 상태 값 중 하나로 설정됩니다. STATUS_INVALID_PARAMETER 상태는 제거 마스크가 유효하지 않음을 나타냅니다.
발언
Serial.sys 및 SerCx를 사용하면 IOCTL_SERIAL_PURGE 요청이 하나 이상의 SERIAL_PURGE_XXX 플래그의 조합을 지정할 수 있습니다. 그러나 SerCx2는 더 제한적입니다.
SerCx2에서는 수신 버퍼가 제거될 경우 모든 읽기 요청을 제거해야 합니다. 따라서 SERIAL_PURGE_RXCLEAR 플래그가 IOCTL_SERIAL_PURGE 요청에 설정된 경우 SerCx2 I/O 요청 큐에 읽기 요청이 포함되어서는 안 되거나 SERIAL_PURGE_RXABORT 플래그를 설정해야 합니다. 그렇지 않으면 STATUS_INVALID_DEVICE_STATE 상태 코드로 IOCTL_SERIAL_PURGE 요청이 실패합니다.
마찬가지로 SerCx2에서는 전송 버퍼가 제거될 경우 모든 쓰기 요청을 제거해야 합니다. 따라서 SERIAL_PURGE_TXCLEAR 플래그가 IOCTL_SERIAL_PURGE 요청에 설정된 경우 SerCx2 I/O 요청 큐에 쓰기 요청이 포함되어서는 안 되거나 SERIAL_PURGE_TXABORT 플래그를 설정해야 합니다. 그렇지 않으면 STATUS_INVALID_DEVICE_STATE 상태 코드로 IOCTL_SERIAL_PURGE 요청이 실패합니다.
SerCx2, SerCx 및 Serial.sys대한 자세한 내용은 직렬 컨트롤러 드라이버 개요참조하세요.
요구 사항
요구 | 값 |
---|---|
헤더 | ntddser.h(Ntddser.h 포함) |