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
Referenz