다음을 통해 공유


GetRawInputBuffer 함수(winuser.h)

호출 스레드의 메시지 큐에 있는 원시 입력 메시지 데이터의 버퍼링된 읽기를 수행합니다.

구문

UINT GetRawInputBuffer(
  [out, optional] PRAWINPUT pData,
  [in, out]       PUINT     pcbSize,
  [in]            UINT      cbSizeHeader
);

매개 변수

[out, optional] pData

형식: PRAWINPUT

원시 입력 데이터를 포함하는 RAWINPUT 구조의 버퍼에 대한 포인터입니다. 버퍼는 32비트 아키텍처의 DWORD 및 64비트 아키텍처의 QWORD 인 포인터 경계에 맞춰야 합니다.

NULL이면 첫 번째 원시 입력 메시지 데이터(최소 필수 버퍼)의 크기(바이트)가 *pcbSize로 반환됩니다.

[in, out] pcbSize

형식: PUINT

제공된 RAWINPUT 버퍼의 크기(바이트)입니다.

[in] cbSizeHeader

형식: UINT

RAWINPUTHEADER 구조체의 크기(바이트)입니다.

반환 값

형식: UINT

pDataNULL이고 함수가 성공하면 반환 값은 0입니다. pDataNULL이 아니고 함수가 성공하면 반환 값은 pData에 기록된 RAWINPUT 구조체의 수입니다.

오류가 발생하면 반환 값은 (UINT)-1입니다. 오류 코드 에 대해 GetLastError 를 호출합니다.

설명

애플리케이션이 원시 입력을 받으면 해당 메시지 큐는 WM_INPUT 메시지를 가져오고 큐 상태 플래그 QS_RAWINPUT 설정됩니다.

GetRawInputBuffer를 사용하여 원시 입력 데이터는 변수 크기 RAWINPUT 구조의 배열에서 읽혀지고 해당 WM_INPUT 메시지는 호출 스레드의 메시지 큐에서 제거됩니다. 모든 원시 입력 메시지를 읽을 때까지 모든 메시지의 데이터에 맞지 않는 버퍼를 사용하여 이 메서드를 여러 번 호출할 수 있습니다.

NEXTRAWINPUTBLOCK 매크로를 사용하면 애플리케이션이 RAWINPUT 구조체의 배열을 트래버스할 수 있습니다.

모든 원시 입력 메시지가 메시지 큐에서 성공적으로 읽은 경우 호출 스레드의 메시지 큐 상태 QS_RAWINPUT 플래그가 지워집니다.

참고

WOW64: 원시 입력 버퍼의 올바른 크기를 얻으려면 *pcbSize를 사용하지 말고 *pcbSize * 8을 대신 사용합니다. GETRawInputBuffer가 WOW64에서 제대로 작동하도록 하려면 RAWINPUT 구조를 8바이트 단위로 정렬해야 합니다. 다음 코드는 WOW64에 RAWINPUT 를 맞추는 방법을 보여 있습니다.

[StructLayout(LayoutKind.Explicit)]
internal struct RAWINPUT
{
    [FieldOffset(0)]
    public RAWINPUTHEADER header;

    [FieldOffset(16+8)]
    public RAWMOUSE mouse;

    [FieldOffset(16+8)]
    public RAWKEYBOARD keyboard;

    [FieldOffset(16+8)]
    public RAWHID hid;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll

추가 정보

개념

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

원시 입력

참조

원시 입력 개요