Freigeben über


GetRawInputBuffer-Funktion (winuser.h)

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

Syntax

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

Die Parameter

[out, optional] pData

Typ: PRAWINPUT

Ein Zeiger auf einen Puffer von RAWINPUT-Strukturen , die die rohen Eingabedaten enthalten. Der Zeiger sollte an einer DWORD-Grenze (32-Bit) ausgerichtet werden.

Wenn NULL, wird die Größe der ersten rohen Eingabemeldungsdaten (minimaler 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 null. 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.

Bemerkungen

Wenn eine Anwendung unformatierte Eingaben empfängt, erhält ihre Nachrichtenwarteschlange eine WM_INPUT Nachricht, und das Warteschlangenstatusflagge QS_RAWINPUT festgelegt ist.

Mit GetRawInputBuffer werden die rohen Eingabedaten im Array von RAWINPUT-Strukturen mit variabler Größe gelesen, und die entsprechenden WM_INPUT Nachrichten werden aus der Nachrichtenwarteschlange des aufrufenden Threads entfernt. Sie können diese Methode mehrmals mit Puffer aufrufen, der nicht in alle Nachrichtendaten passt, bis alle unformatierten Eingabemeldungen gelesen wurden.

Das NEXTRAWINPUTBLOCK-Makro ermöglicht es einer Anwendung, ein Array von RAWINPUT-Strukturen zu durchlaufen.

Wenn alle unformatierten Eingabemeldungen erfolgreich aus der Nachrichtenwarteschlange gelesen wurden, wird QS_RAWINPUT Flag aus dem Status der Nachrichtenwarteschlange des Anrufthreads gelöscht.

Hinweis

WOW64: Um die richtige Größe des Roheingabepuffers zu erhalten, verwenden Sie nicht *pcbSize, verwenden Sie stattdessen *pcbSize * 8. Um sicherzustellen, dass sich GetRawInputBuffer auf WOW64 ordnungsgemäß verhält, müssen Sie die RAWINPUT-Struktur um 8 Byte 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
Mindestens unterstützter Client Windows XP [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2003 [Nur Desktop-Apps]
Zielplattform Fenster
Überschrift winuser.h (enthalten Windows.h)
Bibliothek User32.lib
DLL User32.dll

Siehe auch

Konzeptionelle

GetMessage-

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

raw Input

Referenz

Übersicht über die Roheingabe