하위 수준 콘솔 입력 함수

Important

이 문서에서는 더 이상 에코시스템 로드맵의 일부가 되지 않는 콘솔 플랫폼 기능에 대해 설명합니다. 이 콘텐츠를 신제품에서 사용하지 않는 것이 좋지만, 무기한 앞으로도 기존 사용을 계속 지원할 것입니다. 선호하는 최신 솔루션은 플랫폼 간 시나리오에서 최대 호환성을 위해 가상 터미널 시퀀스에 중점을 둡니다. 이 디자인 결정에 대한 자세한 내용은 클래식 콘솔과 가상 터미널 문서에서 확인할 수 있습니다.

하위 수준 콘솔 입력 함수 버퍼에는 키보드, 마우스, 버퍼 크기 조정, 포커스 및 메뉴 이벤트에 대한 정보를 포함할 수 있는 입력 레코드가 포함되어 있습니다. 하위 수준 함수는 입력 버퍼의 데이터를 필터링하고 처리하는 상위 수준 함수와 달리 입력 버퍼에 대한 직접 액세스를 제공하여 키보드 입력을 제외한 모든 입력을 카드.

콘솔의 입력 버퍼에 액세스하기 위한 5가지 하위 수준 함수가 있습니다.

ReadConsoleInput, PeekConsoleInput WriteConsoleInput 함수는 INPUT_RECORD 구조를 사용하여 입력 버퍼에서 읽거나 씁니다.

다음은 하위 수준 콘솔 입력 함수에 대한 설명입니다.

함수 설명
ReadConsoleInput 입력 버퍼에서 입력 레코드를 읽고 제거합니다. 함수는 하나 이상의 레코드를 읽을 수 있을 때까지 반환되지 않습니다. 그런 다음 더 이상 레코드를 사용할 수 없거나 지정된 레코드 수를 읽을 때까지 사용 가능한 모든 레코드가 호출 프로세스의 버퍼로 전송됩니다. 읽지 않은 레코드는 다음 읽기 작업을 위해 입력 버퍼에 다시 기본. 함수는 읽은 총 레코드 수를 보고합니다. ReadConsoleInput을 사용하는 예제는 입력 버퍼 이벤트 읽기를 참조하세요.
PeekConsoleInput 입력 버퍼에서 보류 중인 입력 레코드를 제거하지 않고 읽습니다. 지정된 번호까지 사용 가능한 모든 레코드는 호출 프로세스의 버퍼에 복사됩니다. 사용할 수 있는 레코드가 없으면 함수가 즉시 반환됩니다. 함수는 읽은 총 레코드 수를 보고합니다.
GetNumberOfConsoleInputEvents 입력 버퍼의 읽지 않은 입력 레코드 수를 결정합니다.
WriteConsoleInput 입력 레코드를 버퍼의 보류 중인 레코드 뒤에 입력 버퍼에 배치합니다. 필요한 경우 입력 버퍼가 동적으로 증가하여 기록된 만큼의 레코드를 보유합니다. 이 함수를 사용하려면 지정된 입력 버퍼 핸들에 GENERIC_WRITE 액세스 권한이 있어야 합니다.
FlushConsoleInputBuffer 입력 버퍼의 모든 읽지 않은 이벤트를 카드. 이 함수를 사용하려면 지정된 입력 버퍼 핸들에 GENERIC_WRITE 액세스 권한이 있어야 합니다.

애플리케이션 프로세스의 스레드는 입력 버퍼에서 입력을 사용할 수 있을 때까지 대기 작업을 수행할 수 있습니다. 대기 작업을 시작하려면 대기 함수 호출에서 입력 버퍼에 대한 핸들을 지정합니다. 이러한 함수는 하나 이상의 개체의 상태가 신호를 받으면 반환할 수 있습니다. 콘솔 입력 핸들의 상태는 입력 버퍼에 읽지 않은 레코드가 있을 때 신호를 수신합니다. 입력 버퍼가 비어 있으면 상태가 신호가 아닌 상태로 다시 설정됩니다. 사용 가능한 입력이 없으면 호출 스레드가 효율적인 대기 상태로 전환되어 대기 작업의 조건이 충족될 때까지 기다리는 동안 프로세서 시간이 거의 소비되지 않습니다.