Bagikan melalui


Fungsi GetRawInputBuffer (winuser.h)

Melakukan pembacaan buffer data pesan input mentah yang ditemukan dalam antrean pesan utas panggilan.

Sintaksis

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

Parameter-parameternya

[out, optional] pData

Jenis: PRAWINPUT

Penunjuk ke buffer struktur RAWINPUT yang berisi data input mentah. Penunjuk harus diratakan pada batas DWORD (32-bit).

Jika NULL, ukuran data pesan input mentah pertama (buffer minimum yang diperlukan), dalam byte, dikembalikan dalam *pcbSize.

[in, out] pcbSize

Jenis: PUINT

Ukurannya, dalam byte, dari buffer RAWINPUT yang disediakan.

[in] cbSizeHeader

Jenis: UINT

Ukurannya, dalam byte, dari struktur RAWINPUTHEADER .

Mengembalikan nilai

Jenis: UINT

Jika pDataNULL dan fungsi berhasil, nilai yang dikembalikan adalah nol. Jika pData bukan NULL dan fungsi berhasil, nilai yang dikembalikan adalah jumlah struktur RAWINPUT yang ditulis ke pData.

Jika terjadi kesalahan, nilai yang dikembalikan adalah (UINT)-1. Panggil GetLastError untuk kode kesalahan.

Komentar

Saat aplikasi menerima input mentah, antrean pesannya mendapatkan pesan WM_INPUT dan bendera status antrean QS_RAWINPUT diatur.

Menggunakan GetRawInputBuffer, data input mentah dibaca dalam array struktur RAWINPUT ukuran variabel dan pesan WM_INPUT terkait dihapus dari antrean pesan utas panggilan. Anda dapat memanggil metode ini beberapa kali dengan buffer yang tidak dapat memuat semua data pesan sampai semua pesan input mentah telah dibaca.

Makro NEXTRAWINPUTBLOCK memungkinkan aplikasi untuk melintasi array struktur RAWINPUT .

Jika semua pesan input mentah telah berhasil dibaca dari antrean pesan, maka bendera QS_RAWINPUT dihapus dari status antrean pesan utas panggilan.

Nota

WOW64: Untuk mendapatkan ukuran buffer input mentah yang benar, jangan gunakan *pcbSize, gunakan *pcbSize * 8 sebagai gantinya. Untuk memastikan GetRawInputBuffer berperilaku baik pada WOW64, Anda harus menyelaraskan struktur RAWINPUT sebesar 8 byte. Kode berikut menunjukkan cara menyelaraskan RAWINPUT untuk WOW64.

[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;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Platform Target Windows
Header winuser.h (termasuk Windows.h)
Perpustakaan User32.lib
DLL User32.dll

Lihat juga

Konseptual

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

Input Mentah

Referensi

Gambaran Umum Input Mentah