IOCTL_GPIO_READ_PINS IOCTL(gpio.h)
IOCTL_GPIO_READ_PINS I/O 제어 코드를 사용하면 GPIO(범용 I/O) 컨트롤러의 클라이언트가 입력으로 구성된 GPIO 핀 집합에서 읽을 수 있습니다. 일반적으로 GPIO 컨트롤러의 클라이언트는 GPIO 핀에 연결하는 주변 장치용 드라이버입니다.
주 코드
입력 버퍼
입력 버퍼가 없습니다.
입력 버퍼 길이
없음.
출력 버퍼
출력 버퍼입니다.
출력 버퍼 길이
출력 버퍼는 클라이언트가 요청을 보내는 대상 연결의 일부인 모든 GPIO 핀의 판독값을 포함할 만큼 커야 합니다. 예를 들어 GPIO 컨트롤러 하드웨어가 64개의 GPIO 핀을 구현하고 클라이언트가 이러한 GPIO 핀 3개에 대한 연결을 여는 경우 1-바이트 버퍼는 연결의 세 핀에서 읽은 세 개의 1비트 값을 포함하기에 충분히 큽니다.
상태 블록
작업이 성공하면 GPIO 컨트롤러 드라이버는 상태 멤버를 STATUS_SUCCESS 설정하고 Information 멤버를 요청된 작업 중에 전송된 총 바이트 수로 설정합니다. 작업이 N 비트를 전송하는 경우 전송되는 바이트 수는 (N + 7) / 8입니다. 즉, 정수 나누기 전에 다음 바이트 경계로 반올림하기 위해 N에 7이 추가됩니다.
이 요청이 실패하면 상태 멤버가 오류 코드로 설정되고 GPIO 핀에서 데이터를 읽지 않습니다. 잘못된 클라이언트 입력, 낮은 리소스 및 디바이스 오작동을 포함할 수 있는 다양한 이유로 요청된 작업이 실패할 수 있습니다.
출력 버퍼가 대상 연결의 모든 GPIO 핀에서 읽은 데이터를 포함할 만큼 충분히 크지 않으면 상태 멤버가 STATUS_BUFFER_TOO_SMALL 설정됩니다. 대상 연결의 GPIO 핀이 출력으로 구성된 경우 상태 멤버는 STATUS_GPIO_OPERATION_DENIED 설정됩니다.
발언
이 요청은 클라이언트가 요청을 보내는 대상 연결의 일부인 모든 GPIO 핀을 읽습니다. 예를 들어 연결에 세 개의 핀이 있는 경우 이러한 핀에서 읽은 1비트 값은 출력 버퍼에 비트 0, 1 및 2로 저장됩니다. 이 예제 연결의 세 핀은 GPIO 컨트롤러 하드웨어의 GPIO 핀 7, 8 및 23에 매핑될 수 있습니다. 이 경우 GPIO 핀 7은 버퍼의 비트 0(최소 비트)에 저장되고, GPIO 핀 8은 버퍼의 비트 1에 저장되고, GPIO 핀 23은 버퍼의 비트 2에 저장됩니다.
클라이언트가 대상 GPIO 디바이스에 대한 연결을 열면 이 연결의 모든 GPIO 핀이 입력 또는 출력으로 구성됩니다. IOCTL_GPIO_READ_PINS 요청은 대상 핀이 입력인 경우에만 성공할 수 있습니다.
클라이언트는 이 I/O 컨트롤 요청을 대상 디바이스의 파일 개체로 보냅니다. 파일 개체는 대상에 대한 논리적 연결을 나타내는 FILE_OBJECT 구조체입니다. KMDF(커널 모드 드라이버 프레임워크) 드라이버는 WdfIoTargetCreate 메서드를 호출하여 이 연결을 엽니다. UMDF(사용자 모드 드라이버 프레임워크) 드라이버는 IWDFRemoteTarget::OpenFileByName 메서드를 호출하여 연결을 엽니다.
IOCTL_GPIO_READ_PINS 요청을 사용하여 GPIO I/O 핀 집합을 읽는 방법을 보여 주는 코드 예제는 다음 항목을 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8부터 지원됩니다. |
헤더 | gpio.h |