Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
Referenz