GetRawInputBuffer-Funktion (winuser.h)

Führt einen gepufferten Lesevorgang der unformatierten Eingabenachrichtendaten aus, die sich in der Nachrichtenwarteschlange des aufrufenden Threads befinden.

Syntax

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

Parameter

[out, optional] pData

Typ: PRAWINPUT

Ein Zeiger auf einen Puffer von RAWINPUT-Strukturen , die die rohen Eingabedaten enthalten. Puffer sollte an einer Zeigergrenze ausgerichtet werden, d. h. ein DWORD für 32-Bit-Architekturen und ein QWORD auf 64-Bit-Architekturen.

Bei NULL wird die Größe der ersten Rohdaten der Eingabenachricht (mindester erforderlicher Puffer) in Bytes in *pcbSize zurückgegeben.

[in, out] pcbSize

Typ: PUINT

Die Größe des bereitgestellten RAWINPUT-Puffers in Bytes.

[in] cbSizeHeader

Typ: UINT

Die Größe der RAWINPUTHEADER-Struktur in Bytes.

Rückgabewert

Typ: UINT

Wenn pDataNULL ist und die Funktion erfolgreich ist, ist der Rückgabewert 0. Wenn pData nicht NULL ist und die Funktion erfolgreich ist, ist der Rückgabewert die Anzahl der RAWINPUT-Strukturen , die in pData geschrieben wurden.

Wenn ein Fehler auftritt, lautet der Rückgabewert (UINT)-1. Rufen Sie GetLastError für den Fehlercode auf.

Hinweise

Wenn eine Anwendung unformatierte Eingabe empfängt, erhält ihre Nachrichtenwarteschlange eine WM_INPUT Nachricht, und die Warteschlange status Flag QS_RAWINPUT festgelegt ist.

Bei Verwendung von GetRawInputBuffer werden die rohen Eingabedaten in das Array von RAWINPUT-Strukturen mit Variablegröße gelesen, und die entsprechenden WM_INPUT Nachrichten werden aus der Nachrichtenwarteschlange des aufrufenden Threads entfernt. Sie können diese Methode mehrmals mit einem Puffer aufrufen, der nicht für alle Nachrichtendaten geeignet ist, bis alle unformatierten Eingabenachrichten gelesen wurden.

Mit dem MAKRO NEXTRAWINPUTBLOCK kann eine Anwendung ein Array von RAWINPUT-Strukturen durchlaufen.

Wenn alle unformatierten Eingabenachrichten erfolgreich aus der Nachrichtenwarteschlange gelesen wurden, wird QS_RAWINPUT Flag aus der Nachrichtenwarteschlange des aufrufenden Threads status gelöscht.

Hinweis

WOW64: Verwenden Sie nicht *pcbSize, um die richtige Größe des Rohdatenpuffers zu erhalten. Verwenden Sie stattdessen *pcbSize * 8. Um sicherzustellen, dass Sich GetRawInputBuffer auf WOW64 ordnungsgemäß verhält, müssen Sie die RAWINPUT-Struktur um 8 Bytes ausrichten. Der folgende Code zeigt, wie RAWINPUT für WOW64 ausgerichtet wird.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll

Siehe auch

Konzept

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

Unformatierte Eingabe

Referenz

Übersicht über die Rohdateneingabe