Partager via


GetRawInputBuffer, fonction (winuser.h)

Effectue une lecture en mémoire tampon des données brutes des messages d’entrée trouvées dans la file d’attente des messages du thread appelant.

Syntaxe

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

Paramètres

[out, optional] pData

Type : PRAWINPUT

Pointeur vers une mémoire tampon de structures RAWINPUT qui contiennent les données d’entrée brutes. La mémoire tampon doit être alignée sur une limite de pointeur, qui est un DWORD sur les architectures 32 bits et un QWORD sur les architectures 64 bits.

Si la valeur est NULL, la taille des premières données de message d’entrée brutes (mémoire tampon minimale requise), en octets, est retournée dans *pcbSize.

[in, out] pcbSize

Type : PUINT

Taille, en octets, de la mémoire tampon RAWINPUT fournie.

[in] cbSizeHeader

Type : UINT

Taille, en octets, de la structure RAWINPUTHEADER .

Valeur retournée

Type : UINT

Si pData a la valeur NULL et que la fonction réussit, la valeur de retour est zéro. Si pData n’a pas la valeur NULL et que la fonction réussit, la valeur de retour correspond au nombre de structures RAWINPUT écrites dans pData.

Si une erreur se produit, la valeur de retour est (UINT)-1. Appelez GetLastError pour le code d’erreur.

Remarques

Lorsqu’une application reçoit une entrée brute, sa file d’attente de messages obtient un message WM_INPUT et l’indicateur status file d’attente QS_RAWINPUT est défini.

À l’aide de GetRawInputBuffer, les données d’entrée brutes sont lues dans le tableau de structures RAWINPUT de taille variable et les messages WM_INPUT correspondants sont supprimés de la file d’attente des messages du thread appelant. Vous pouvez appeler cette méthode plusieurs fois avec une mémoire tampon qui ne peut pas s’adapter à toutes les données du message tant que tous les messages d’entrée bruts n’ont pas été lus.

La macro NEXTRAWINPUTBLOCK permet à une application de parcourir un tableau de structures RAWINPUT .

Si tous les messages d’entrée bruts ont été correctement lus à partir de la file d’attente des messages, QS_RAWINPUT indicateur est effacé de la status de file d’attente de messages du thread appelant.

Notes

WOW64 : pour obtenir la taille correcte de la mémoire tampon d’entrée brute, n’utilisez pas *pcbSize, utilisez *pcbSize * 8 à la place. Pour vous assurer que GetRawInputBuffer se comporte correctement sur WOW64, vous devez aligner la structure RAWINPUT de 8 octets. Le code suivant montre comment aligner RAWINPUT pour 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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure Windows.h)
Bibliothèque User32.lib
DLL User32.dll

Voir aussi

Conceptuel

GetMessage

NEXTRAWINPUTBLOCK

RAWINPUT

RAWINPUTHEADER

Entrée brute

Référence

Vue d’ensemble des entrées brutes