다음을 통해 공유


IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION IOCTL(gpio.h)

IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION I/O 제어 코드를 사용하면 GPIO(범용 I/O) 컨트롤러의 클라이언트가 컨트롤러별 디바이스 제어 작업을 요청할 수 있습니다. 일반적으로 GPIO 컨트롤러의 클라이언트는 GPIO 핀에 연결하는 주변 장치용 드라이버입니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

이 I/O 제어 코드에 대한 입력 버퍼 요구 사항은 GPIO 컨트롤러 드라이버의 개발자가 정의합니다. METHOD_BUFFERED IRP의 입력 버퍼에 대한 자세한 내용은 I/O 제어 코드에 대한 버퍼 설명을 참조하세요.

출력 버퍼

이 I/O 제어 코드에 대한 출력 버퍼 요구 사항은 GPIO 컨트롤러 드라이버의 개발자가 정의합니다. METHOD_BUFFERED IRP의 출력 버퍼에 대한 자세한 내용은 I/O 제어 코드에 대한 버퍼 설명을 참조하세요.

상태 블록

작업이 성공하면 GPIO 컨트롤러 드라이버는 상태 멤버를 STATUS_SUCCESS 설정하고 정보 멤버를 출력 버퍼에 기록된 총 바이트 수로 설정합니다. 작업에서 출력 데이터를 생성하지 않거나 출력 데이터 포인터가 NULL이면 정보 멤버가 0으로 설정됩니다.

입력 버퍼가 입력 매개 변수를 포함할 만큼 충분히 크지 않거나 출력 버퍼가 컨트롤러별 작업에 대한 출력 매개 변수를 포함할 만큼 충분히 크지 않은 경우 Status 멤버는 STATUS_BUFFER_TOO_SMALL 설정됩니다.

이 요청이 실패하면 Status 멤버가 오류 코드로 설정되고 정보 멤버가 0으로 설정됩니다.

GPIO 컨트롤러 드라이버가 컨트롤러 관련 작업을 지원하지 않는 경우 Status 멤버는 STATUS_NOT_IMPLEMENTED 설정됩니다. GPIO 컨트롤러 드라이버가 컨트롤러 관련 작업을 지원하지만 입력 버퍼의 내용을 유효한 것으로 인식하지 못하는 경우 Status 멤버는 STATUS_NOT_SUPPORTED.

설명

일반적인 GPIO 컨트롤러는 IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청을 지원하지 않습니다. 그러나 컨트롤러 드라이버 개발자는 특정 하드웨어 플랫폼에서 GPIO 컨트롤러의 특별한 요구 사항 또는 기능을 해결하기 위해 하나 이상의 컨트롤러별 작업을 정의할 수 있습니다.

특정 유형의 GPIO 컨트롤러 하드웨어에서 지원하는 컨트롤러별 작업을 인식하는 주변 장치 드라이버만 IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청을 사용하여 이러한 작업을 수행할 수 있습니다. 이러한 요청을 사용하여 한 하드웨어 플랫폼에서 컨트롤러별 작업을 수행하는 주변 장치 드라이버는 이러한 작업을 지원하지 않는 다른 플랫폼과의 호환성이 손실될 위험이 있습니다.

IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 제어 코드의 의미는 GPIO 컨트롤러 드라이버의 개발자에 의해 정의됩니다. 일반적으로 컨트롤러 드라이버는 이 제어 코드를 사용하여 주변 장치 드라이버가 디바이스가 연결된 GPIO 핀에서 하드웨어 관련 작업을 수행할 수 있도록 합니다.

예를 들어 IOCTL_GPIO_CONTROLLER_SPECIFIC_FUNCTION 요청에 대한 입력 버퍼에는 컨트롤러 정의 명령 코드와 일부 수의 입력 매개 변수가 포함될 수 있습니다. GPIO 컨트롤러 드라이버는 명령 코드에 따라 출력 버퍼에 데이터를 쓰거나 쓰지 않을 수 있습니다.

주변 장치 드라이버는 대상 GPIO 디바이스의 파일 개체에 이 I/O 제어 요청을 보냅니다. 파일 개체는 GPIO 컨트롤러의 핀 집합에 대한 열린 연결을 나타내는 FILE_OBJECT 구조체입니다. KMDF(커널 모드 드라이버 프레임워크) 드라이버는 WDFIOTARGET 핸들을 사용하여 이 파일 개체를 참조합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 부터 지원합니다.
머리글 gpio.h

추가 정보

FILE_OBJECT