EVT_SERCX_PURGE 콜백 함수(sercx.h)

EvtSerCxPurge 이벤트 콜백 함수는 직렬 컨트롤러의 하드웨어 버퍼를 제거하기 위해 SerCx(직렬 프레임워크 확장)에서 호출됩니다.

구문

EVT_SERCX_PURGE EvtSercxPurge;

NTSTATUS EvtSercxPurge(
  [in] WDFDEVICE Device,
  [in] ULONG PurgeMask
)
{...}

매개 변수

[in] Device

직렬 컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 WDFDEVICE 핸들입니다.

[in] PurgeMask

제거할 하드웨어 버퍼를 설명하는 플래그 집합입니다. 현재 직렬 컨트롤러에서 수행하는 제거 작업에 대한 플래그는 정의되지 않습니다. 자세한 내용은 설명 부분을 참조하세요.

반환 값

EvtSerCxPurge 함수는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 상태 코드를 반환합니다.

설명

직렬 컨트롤러 드라이버는 이 콜백 함수를 구현합니다. SerCx는 클라이언트(애플리케이션 또는 주변 드라이버)가 직렬 컨트롤러에서 관리하는 하드웨어 버퍼를 제거해야 하는 IOCTL_SERIAL_PURGE 제어 요청을 보낼 때 이 함수를 호출합니다.

SerCx는 다음 표에 나열된 플래그로 지정된 제거 작업을 수행합니다.

플래그 비트 의미
SERIAL_PURGE_RXABORT 모든 읽기 요청을 제거합니다.
SERIAL_PURGE_RXCLEAR 입력 버퍼가 있는 경우 제거합니다. 이 버퍼의 모든 수신 데이터는 삭제됩니다.
SERIAL_PURGE_TXABORT 모든 쓰기 요청을 제거합니다.
SERIAL_PURGE_TXCLEAR 출력 버퍼가 있는 경우 제거합니다. 이 버퍼의 모든 전송 데이터는 삭제됩니다.
 

EvtSerCxPurge 함수는 이 테이블의 플래그를 포함하는 제거 요청을 받지 않습니다. SERIAL_PURGE_XXX 플래그는 Ntddser.h 헤더 파일에 정의됩니다.

현재 직렬 컨트롤러 드라이버에서 수행하는 제거 작업을 지정하기 위해 SERIAL_PURGE_XXX 플래그가 정의되지 않으며 직렬 컨트롤러 드라이버는 EvtSerCxPurge 호출에 대한 응답으로 제거 작업을 수행하지 않아야 합니다.

IOCTL_SERIAL_PURGE 제어 요청에서 보류 중인 읽기 또는 쓰기 요청을 취소해야 하는 경우 SerCx는 EvtSerCxPurge 함수를 호출하기 전에 이러한 요청을 취소합니다.

EvtSerCxPurge 콜백 함수를 등록하기 위해 컨트롤러 드라이버는 EvtDriverDeviceAdd 콜백 중에 SerCxInitialize 메서드를 호출합니다.

예제

이 콜백에 대한 함수 형식은 다음과 같이 Sercx.h에서 선언됩니다.

typedef NTSTATUS
  EVT_SERCX_PURGE(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    );

라는 MyEvtSerCxPurgeEvtSerCxPurge 콜백 함수를 정의하려면 먼저 다음과 같이 SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 필요한 함수 선언을 제공해야 합니다.

EVT_SERCX_PURGE MyEvtSerCxPurge;

그런 다음, 다음과 같이 콜백 함수를 구현합니다.

NTSTATUS
  MyEvtSerCxPurge(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    )
{ ... }

함수 선언에 대한 SDV 요구 사항에 대한 자세한 내용은 KMDF 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 sercx.h
IRQL IRQL <= DISPATCH_LEVEL 호출

추가 정보

EvtDriverDeviceAdd

IOCTL_SERIAL_PURGE

SerCxInitialize