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
pData가 NULL이고 함수가 성공하면 반환 값은 0입니다. pData가 NULL이 아니고 함수가 성공하면 반환 값은 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 |
추가 정보
개념
참조