다음을 통해 공유


EVT_SERCX_CONTROL 콜백 함수(sercx.h)

EvtSerCxControl 이벤트 콜백 함수는 SerCx(직렬 프레임워크 확장)가 지원하는 IOCTL(I/O 제어 코드)이 있는 I/O 컨트롤 요청을 처리합니다.

구문

EVT_SERCX_CONTROL EvtSercxControl;

NTSTATUS EvtSercxControl(
  [in] WDFDEVICE Device,
  [in] WDFREQUEST Request,
  [in] size_t OutputBufferLength,
  [in] size_t InputBufferLength,
  [in] ULONG IoControlCode
)
{...}

매개 변수

[in] Device

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

[in] Request

I/O 컨트롤 요청을 나타내는 프레임워크 요청 개체에 대한 WDFREQUEST 핸들입니다.

[in] OutputBufferLength

Request 매개 변수에 지정된 I/O 컨트롤 요청에 대한 출력 버퍼의 길이(바이트)를 지정합니다.

[in] InputBufferLength

Request 매개 변수에 지정된 I/O 컨트롤 요청에 대한 입력 버퍼의 길이(바이트)를 지정합니다.

[in] IoControlCode

Request 매개 변수에 지정된 I/O 컨트롤 요청에서 IOCTL을 지정합니다.

반환 값

EvtSerCxControl 함수는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 상태 코드를 반환합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

설명

이 콜백 함수를 구현하려면 직렬 컨트롤러 드라이버가 필요합니다. SerCx는 이 함수를 호출하여 처리를 위해 I/O 컨트롤 요청을 컨트롤러 드라이버에 전달합니다. 이 함수가 반환되기 전에 요청된 작업을 수행하거나 오류 상태 반환하여 요청을 완료해야 합니다. 특정 요청에 대한 지원을 구현하지 않는 드라이버는 이 요청에 대한 STATUS_NOT_IMPLEMENTED 오류 상태 반환해야 합니다.

일반적으로 EvtSerCxControl 함수는 이 함수가 직렬 컨트롤러의 하드웨어 레지스터에서 설정을 변경하기 전에 컨트롤러 드라이버의 ISR과 동기화되어야 합니다.

EvtSerCxControl 함수의 반환 값은 이 함수가 I/O 컨트롤 요청의 상태 블록에 쓰는 상태 값과 일치해야 합니다. SerCx는 반환 값을 사용하여 컨트롤러 드라이버 및 직렬 컨트롤러 하드웨어의 상태를 추적합니다.

다음은 이 콜백 함수가 처리할 준비가 되어 있어야 하는 IOCTL 목록입니다.

IOCTL_SERIAL_CLEAR_STATSIOCTL_SERIAL_CLR_DTRIOCTL_SERIAL_CLR_RTSIOCTL_SERIAL_GET_BAUD_RATEIOCTL_SERIAL_GET_CHARSIOCTL_SERIAL_GET_COMMSTATUS IOCTL_SERIAL_GET_DTRRTSIOCTL_SERIAL_GET_HANDFLOW IOCTL_SERIAL_IMMEDIATE_CHARIOCTL_SERIAL_GET_LINE_CONTROLIOCTL_SERIAL_GET_MODEM_CONTROLIOCTL_SERIAL_GET_MODEMSTATUSIOCTL_SERIAL_GET_PROPERTIESIOCTL_SERIAL_GET_STATSIOCTL_SERIAL_LSRMST_INSERTIOCTL_SERIAL_SET_BAUD_RATEIOCTL_SERIAL_SET_BREAK_OFFIOCTL_SERIAL_SET_BREAK_ON IOCTL_SERIAL_SET_CHARSIOCTL_SERIAL_SET_DTRIOCTL_SERIAL_SET_FIFO_CONTROLIOCTL_SERIAL_SET_HANDFLOW IOCTL_SERIAL_SET_LINE_CONTROLIOCTL_SERIAL_SET_MODEM_CONTROLIOCTL_SERIAL_SET_RTSIOCTL_ SERIAL_SET_XOFFIOCTL_SERIAL_SET_XONIOCTL_SERIAL_XOFF_COUNTEREvtSerCxControl 콜백 함수를 등록하려면 컨트롤러 드라이버가 EvtDriverDeviceAdd 콜백 중에 SerCxInitialize 메서드를 호출합니다.

예제

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

typedef NTSTATUS
  EVT_SERCX_CONTROL(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    );

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

EVT_SERCX_CONTROL MyEvtSerCxControl;

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

NTSTATUS
  MyEvtSerCxControl(
    __in WDFREQUEST Request,
    __in size_t OutputBufferLength,
    __in size_t InputBufferLength,
    __in ULONG IoControlCode
    )
{ ... }

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

요구 사항

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

추가 정보

EvtDriverDeviceAdd

SerCxInitialize