다음을 통해 공유


GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION 콜백 함수(gpioclx.h)

CLIENT_ControllerSpecificFunction 이벤트 콜백 함수는 특정 GPIO(범용 I/O) 컨트롤러와 관련된 작업을 수행합니다.

통사론

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION GpioClientControllerSpecificFunction;

NTSTATUS GpioClientControllerSpecificFunction(
  [in]      PVOID Context,
  [in, out] PGPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Parameters
)
{...}

매개 변수

[in] Context

GPIO 컨트롤러 드라이버의 디바이스 컨텍스트대한 포인터입니다.

[in, out] Parameters

컨트롤러별 작업에 대한 입력 및 출력 버퍼를 포함하는 GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS 구조체에 대한 포인터입니다.

반환 값

CLIENT_ControllerSpecificFunction 함수는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 반환 값에는 다음 오류 코드가 포함됩니다.

반환 코드 묘사
STATUS_NOT_SUPPORTED
GPIO 컨트롤러는 입력 매개 변수로 지정된 작업을 지원하지 않습니다.
STATUS_BUFFER_TOO_SMALL
입력 버퍼 또는 출력 버퍼의 크기가 너무 작습니다.

발언

옵션으로 GPIO 컨트롤러 드라이버는 IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청을 지원할 수 있습니다. 이 유형의 I/O 제어 요청(IOCTL)은 이러한 작업이 필요한 주변 장치 드라이버의 이점을 위해 컨트롤러별 작업을 수행합니다. 이 IOCTL을 지원하기 위해 GPIO 컨트롤러 드라이버는 CLIENT_ControllerSpecificFunction 함수를 구현합니다.

GPIO 프레임워크 확장(GpioClx)은 특정 하드웨어 플랫폼의 특정 요구 사항을 해결하기 위해 CLIENT_ControllerSpecificFunction 함수를 지원합니다. 일반적인 GPIO 컨트롤러 드라이버는 이 함수를 구현하지 않습니다. IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청을 사용하여 한 플랫폼에서 하드웨어별 작업을 수행하는 주변 장치 드라이버는 이 작업을 지원하지 않는 다른 플랫폼과의 호환성이 손실될 위험이 있습니다.

일반적으로 CLIENT_ControllerSpecificFunction 함수는 GPIO 컨트롤러를 프로그래밍하여 GPIO 핀 집합에서 하드웨어별 작업을 수행합니다. 이 작업에 대한 입력 및 출력 매개 변수는 개발자가 GPIO 컨트롤러 드라이버에 대해 정의합니다. GPIO 컨트롤러 드라이버에서 구현한 특정 작업을 알고 있는 주변 장치 드라이버만 이러한 작업을 요청할 수 있습니다.

GpioClx는 IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청을 받으면 GPIO 컨트롤러 드라이버가 CLIENT_ControllerSpecificFunction 함수를 구현했는지 확인합니다. 이 경우 GpioClx는 IOCTL에서 GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS 구조로 입력 및 출력 버퍼에 대한 설명을 복사하고 이 구조체에 대한 포인터를 CLIENT_ControllerSpecificFunction 함수에 대한 매개 변수로 전달합니다. GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS 구조체의 매개 변수 값이 유효한 경우 함수는 요청된 작업을 수행하고 STATUS_SUCCESS 반환합니다.

GpioClx가 IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청을 수신하고 GPIO 컨트롤러 드라이버가 CLIENT_ControllerSpecificFunction 함수를 구현하지 않는 경우 GpioClx는 오류 코드 STATUS_NOT_IMPLEMENTED 사용하여 IOCTL을 완료합니다.

예제

CLIENT_ControllerSpecificFunction 콜백 함수를 정의하려면 먼저 정의하는 콜백 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버 , SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 코드 분석을데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 이름이 MyEvtGpioControllerSpecificFunctionCLIENT_ControllerSpecificFunction 콜백 함수를 정의하려면 다음 코드 예제와 같이 GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION 함수 형식을 사용합니다.

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION MyEvtGpioControllerSpecificFunction;

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

_Use_decl_annotations_
NTSTATUS
  MyEvtGpioControllerSpecificFunction(
    PVOID Context,
    PGPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS Parameters
    )
{ ... }

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION 함수 형식은 Gpioclx.h 헤더 파일에 정의됩니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION 함수 형식에 적용되는 주석이 사용되는지 확인합니다. 함수 선언 요구 사항에 대한 자세한 내용은 KMDF 드라이버함수 역할 형식을 사용하여 함수 선언을 참조하세요. Use_decl_annotations대한 자세한 내용은 함수 동작 주석을참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 8부터 지원됩니다.
대상 플랫폼 바탕 화면
헤더 gpioclx.h
IRQL PASSIVE_LEVEL 호출합니다.

참고 항목

GPIO_CLIENT_CONTROLLER_SPECIFIC_FUNCTION_PARAMETERS

IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION