<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_DEVICE_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_REMOVE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_EXCLUDE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_PAGEONLY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_NOLEGACY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_INPUTSINK']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_CAPTUREMOUSE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_NOHOTKEYS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_APPKEYS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_EXINPUTSINK']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDEV_DEVNOTIFY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_DEVICE_TYPE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIM_TYPEMOUSE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIM_TYPEKEYBOARD']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIM_TYPEHID']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_KEY_STATE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_VKEYTOITEM']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_SETHOTKEY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_GETHOTKEY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_KEYFIRST']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_KEYDOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_KEYUP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_SYSKEYDOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_SYSKEYUP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_KEYLAST']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_IME_KEYLAST']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_IME_KEYDOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_IME_KEYUP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='WM_HOTKEY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_MOUSE_BUTTON_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_LEFT_BUTTON_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_LEFT_BUTTON_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_RIGHT_BUTTON_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_RIGHT_BUTTON_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_MIDDLE_BUTTON_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_MIDDLE_BUTTON_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_1_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_1_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_2_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_2_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_3_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_3_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_4_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_4_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_5_DOWN']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_BUTTON_5_UP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_MOUSE_WHEEL']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_MOUSE_MODE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='MOUSE_MOVE_RELATIVE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='MOUSE_MOVE_ABSOLUTE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='MOUSE_VIRTUAL_DESKTOP']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='MOUSE_ATTRIBUTES_CHANGED']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='MOUSE_MOVE_NOCOALESCE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_INPUT_DATA_TYPE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_INPUT']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_HEADER']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_INPUT_DEVICE_INFO_TYPE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDI_PREPARSEDDATA']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDI_DEVICENAME']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RIDI_DEVICEINFO']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAW_SCAN_CODE_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_KEY_MAKE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_KEY_BREAK']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_KEY_E0']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RI_KEY_E1']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='SharpDX.RawInput.RawInputFunctions']/*"/>
<paramname="rawInputDeviceListRef"><dd><p>An array of <strong><seecref="T:SharpDX.RawInput.RawInputDevicelist"/></strong> structures for the devices attached to the system. If <strong><c>null</c></strong>, the number of devices are returned in *<em>puiNumDevices</em>. </p></dd></param>
<paramname="uiNumDevicesRef"><dd><p>If <em>pRawInputDeviceList</em> is <strong><c>null</c></strong>, the function populates this variable with the number of devices attached to the system; otherwise, this variable specifies the number of <strong><seecref="T:SharpDX.RawInput.RawInputDevicelist"/></strong> structures that can be contained in the buffer to which <em>pRawInputDeviceList</em> points. If this value is less than the number of devices attached to the system, the function returns the actual number of devices in this variable and fails with <strong><seecref="F:SharpDX.Win32.ErrorCode.InsufficientBuffer"/></strong>.</p></dd></param>
<paramname="cbSize"><dd><p>The size of a <strong><seecref="T:SharpDX.RawInput.RawInputDevicelist"/></strong> structure, in bytes.</p></dd></param>
<returns><p>If the function is successful, the return value is the number of devices stored in the buffer pointed to by <em>pRawInputDeviceList</em>.</p><p>On any other error, the function returns (<strong>UINT</strong>) -1 and <strong>GetLastError</strong> returns the error indication.</p></returns>
<p>The devices returned from this function are the mouse, the keyboard, and other Human Interface Device (HID) devices.</p><p>To get more detailed information about the attached devices, call <strong>GetRawInputDeviceInfo</strong> using the hDevice from <strong><seecref="T:SharpDX.RawInput.RawInputDevicelist"/></strong>. </p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='GetRawInputDeviceList']/*"/>
<p>Retrieves the information about the raw input devices for the current application.</p>
</summary>
<paramname="rawInputDevicesRef"><dd><p>An array of <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structures for the application. </p></dd></param>
<paramname="uiNumDevicesRef"><dd><p>The number of <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structures in *<em>pRawInputDevices</em>. </p></dd></param>
<paramname="cbSize"><dd><p>The size, in bytes, of a <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structure. </p></dd></param>
<returns><p>If successful, the function returns a non-negative number that is the number of <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structures written to the buffer. </p><p>If the <em>pRawInputDevices</em> buffer is too small or <strong><c>null</c></strong>, the function sets the last error as <strong><seecref="F:SharpDX.Win32.ErrorCode.InsufficientBuffer"/></strong>, returns -1, and sets <em>puiNumDevices</em> to the required number of devices. If the function fails for any other reason, it returns -1. For more details, call <strong>GetLastError</strong>. </p></returns>
<remarks>
<p>To receive raw input from a device, an application must register it by using <strong>RegisterRawInputDevices</strong>. </p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='GetRegisteredRawInputDevices']/*"/>
<msdn-id>ms645599</msdn-id>
<unmanaged>unsigned int GetRegisteredRawInputDevices([Out, Buffer, Optional] RAWINPUTDEVICE* pRawInputDevices,[InOut] unsigned int* puiNumDevices,[In] unsigned int cbSize)</unmanaged>
<p>Retrieves information about the raw input device.</p>
</summary>
<paramname="hDevice"><dd><p>A handle to the raw input device. This comes from the <em>lParam</em> of the <strong>WM_INPUT</strong> message, from the <strong>hDevice</strong> member of <strong><seecref="T:SharpDX.RawInput.RawInputHeader"/></strong>, or from <strong>GetRawInputDeviceList</strong>. It can also be <strong><c>null</c></strong> if an application inserts input data, for example, by using <strong>SendInput</strong>. </p></dd></param>
<paramname="uiCommand"><dd><p>Specifies what data will be returned in <em>pData</em>. This parameter can be one of the following values. </p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceName"/></strong></dt><dt>0x20000007</dt></dl></td><td><p><em>pData</em> points to a string that contains the device name. </p><p>For this <em>uiCommand</em> only, the value in <em>pcbSize</em> is the character count (not the byte count).</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceInfo"/></strong></dt><dt>0x2000000b</dt></dl></td><td><p><em>pData</em> points to an <strong><seecref="T:SharpDX.RawInput.RawDeviceInformation"/></strong> structure.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.RawInputDeviceInfoType.PreparsedData"/></strong></dt><dt>0x20000005</dt></dl></td><td><p><em>pData</em> points to the previously parsed data.</p></td></tr></table><p>?</p></dd></param>
<paramname="dataRef"><dd><p>A reference to a buffer that contains the information specified by <em>uiCommand</em>. If <em>uiCommand</em> is <strong><seecref="F:SharpDX.RawInput.RawInputDeviceInfoType.DeviceInfo"/></strong>, set the <strong>cbSize</strong> member of <strong><seecref="T:SharpDX.RawInput.RawDeviceInformation"/></strong> to <code>sizeof(<seecref="T:SharpDX.RawInput.RawDeviceInformation"/>)</code> before calling <strong>GetRawInputDeviceInfo</strong>. </p></dd></param>
<paramname="cbSizeRef"><dd><p>The size, in bytes, of the data in <em>pData</em>. </p></dd></param>
<returns><p>If successful, this function returns a non-negative number indicating the number of bytes copied to <em>pData</em>. </p><p>If <em>pData</em> is not large enough for the data, the function returns -1. If <em>pData</em> is <strong><c>null</c></strong>, the function returns a value of zero. In both of these cases, <em>pcbSize</em> is set to the minimum size required for the <em>pData</em> buffer.</p><p>Call <strong>GetLastError</strong> to identify any other errors.</p></returns>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='GetRawInputDeviceInfoW']/*"/>
<p>Retrieves the raw input from the specified device.</p>
</summary>
<paramname="hRawInput"><dd><p>A handle to the <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure. This comes from the <em>lParam</em> in <strong>WM_INPUT</strong>. </p></dd></param>
<paramname="uiCommand"><dd><p>The command flag. This parameter can be one of the following values. </p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.RawInputDataType.Header"/></strong></dt><dt>0x10000005</dt></dl></td><td><p>Get the header information from the <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.RawInputDataType.Input"/></strong></dt><dt>0x10000003</dt></dl></td><td><p>Get the raw data from the <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure.</p></td></tr></table><p>?</p></dd></param>
<paramname="dataRef"><dd><p>A reference to the data that comes from the <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure. This depends on the value of <em>uiCommand</em>. If <em>pData</em> is <strong><c>null</c></strong>, the required size of the buffer is returned in *<em>pcbSize</em>. </p></dd></param>
<paramname="cbSizeRef"><dd><p>The size, in bytes, of the data in <em>pData</em>. </p></dd></param>
<paramname="cbSizeHeader"><dd><p>The size, in bytes, of the <strong><seecref="T:SharpDX.RawInput.RawInputHeader"/></strong> structure. </p></dd></param>
<returns><p>If <em>pData</em> is <strong><c>null</c></strong> and the function is successful, the return value is 0. If <em>pData</em> is not <strong><c>null</c></strong> and the function is successful, the return value is the number of bytes copied into pData.</p><p>If there is an error, the return value is (<strong>UINT</strong>)-1.</p></returns>
<remarks>
<p><strong>GetRawInputData</strong> gets the raw input one <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure at a time. In contrast, <strong>GetRawInputBuffer</strong> gets an array of <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structures.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='GetRawInputData']/*"/>
<msdn-id>ms645596</msdn-id>
<unmanaged>unsigned int GetRawInputData([In] HRAWINPUT hRawInput,[In] RAW_INPUT_DATA_TYPE uiCommand,[Out, Buffer, Optional] void* pData,[InOut] unsigned int* pcbSize,[In] unsigned int cbSizeHeader)</unmanaged>
<paramname="rawInputDevicesRef"><dd><p>An array of <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structures that represent the devices that supply the raw input.</p></dd></param>
<paramname="uiNumDevices"><dd><p>The number of <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structures pointed to by <em>pRawInputDevices</em>.</p></dd></param>
<paramname="cbSize"><dd><p>The size, in bytes, of a <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structure.</p></dd></param>
<returns><p><strong>TRUE</strong> if the function succeeds; otherwise, <strong><seecref="F:SharpDX.Result.False"/></strong>. If the function fails, call <strong>GetLastError</strong> for more information.</p></returns>
<p>To receive <strong>WM_INPUT</strong> messages, an application must first register the raw input devices using <strong>RegisterRawInputDevices</strong>. By default, an application does not receive raw input.</p><p>To receive <strong>WM_INPUT_DEVICE_CHANGE</strong> messages, an application must specify the <seecref="F:SharpDX.RawInput.DeviceFlags.DeviceNotify"/> flag for each device class that is specified by the usUsagePage and usUsage fields of the <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structure . By default, an application does not receive <strong>WM_INPUT_DEVICE_CHANGE</strong> notifications for raw input device arrival and removal.</p><p>If a <strong><seecref="T:SharpDX.RawInput.RawInputDevice"/></strong> structure has the <seecref="F:SharpDX.RawInput.DeviceFlags.Remove"/> flag set and the hwndTarget parameter is not set to <c>null</c>, then parameter validation will fail. </p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RegisterRawInputDevices']/*"/>
<paramname="dataRef"><dd><p>A reference to a buffer of <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structures that contain the raw input data. If <strong><c>null</c></strong>, the minimum required buffer, in bytes, is returned in *<em>pcbSize</em>. </p></dd></param>
<paramname="cbSizeRef"><dd><p>The size, in bytes, of a <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure. </p></dd></param>
<paramname="cbSizeHeader"><dd><p>The size, in bytes, of the <strong><seecref="T:SharpDX.RawInput.RawInputHeader"/></strong> structure. </p></dd></param>
<returns><p>If <em>pData</em> is <c>null</c> and the function is successful, the return value is zero. If <em>pData</em> is not <c>null</c> and the function is successful, the return value is the number of <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structures written to <em>pData</em>.</p><p>If an error occurs, the return value is (<strong>UINT</strong>)-1. Call <strong>GetLastError</strong> for the error code.</p></returns>
<p>Using <strong>GetRawInputBuffer</strong>, the raw input data is buffered in the array of <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structures. For an unbuffered read, use the <strong>GetMessage</strong> function to read in the raw input data. </p><p>The <strong>NEXTRAWINPUTBLOCK</strong> macro allows an application to traverse an array of <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structures.</p><p><strong>Note</strong>??To get the correct size of the raw input buffer, do not use *<em>pcbSize</em>, use *<em>pcbSize</em> * 8 instead. To ensure <strong>GetRawInputBuffer</strong> behaves properly on WOW64, you must align the <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> structure by 8 bytes. The following code shows how to align <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> for WOW64. </p><pre><code>[StructLayout(LayoutKind.Explicit)]
{ [FieldOffset(0)] public <seecref="T:SharpDX.RawInput.RawInputHeader"/> header; [FieldOffset(16+8)] public <seecref="T:SharpDX.RawInput.RawMouse"/> mouse; [FieldOffset(16+8)] public <seecref="T:SharpDX.RawInput.RawKeyboard"/> keyboard; [FieldOffset(16+8)] public <seecref="T:SharpDX.RawInput.RawHid"/> hid;
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='GetRawInputBuffer']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO::cbSize']/*"/>
<dd><p>The type of raw input data. This member can be one of the following values. </p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.HumanInputDevice"/></strong></dt><dt>2</dt></dl></td><td><p>Data comes from an HID that is not a keyboard or a mouse.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.Keyboard"/></strong></dt><dt>1</dt></dl></td><td><p>Data comes from a keyboard.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.Mouse"/></strong></dt><dt>0</dt></dl></td><td><p>Data comes from a mouse.</p></td></tr></table><p>?</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO::dwType']/*"/>
<dd><p>If <strong>dwType</strong> is <strong><seecref="F:SharpDX.RawInput.DeviceType.Mouse"/></strong>, this is the <strong><seecref="T:SharpDX.RawInput.RawDeviceInformationMouse"/></strong> structure that defines the mouse. </p></dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO::mouse']/*"/>
<dd><p>If <strong>dwType</strong> is <strong><seecref="F:SharpDX.RawInput.DeviceType.Keyboard"/></strong>, this is the <strong><seecref="T:SharpDX.RawInput.RawDeviceInformationKeyboard"/></strong> structure that defines the keyboard. </p></dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO::keyboard']/*"/>
<dd><p>If <strong>dwType</strong> is <strong><seecref="F:SharpDX.RawInput.DeviceType.HumanInputDevice"/></strong>, this is the <strong><seecref="T:SharpDX.RawInput.RawDeviceInformationHid"/></strong> structure that defines the HID device. </p></dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO::hid']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_HID']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_HID::dwVendorId']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_HID::dwProductId']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_HID::dwVersionNumber']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_HID::usUsagePage']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_HID::usUsage']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwType']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwSubType']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwKeyboardMode']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwNumberOfFunctionKeys']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwNumberOfIndicators']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_KEYBOARD::dwNumberOfKeysTotal']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_MOUSE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_MOUSE::dwId']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_MOUSE::dwNumberOfButtons']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_MOUSE::dwSampleRate']/*"/>
<dd><p><strong>TRUE</strong> if the mouse has a wheel for horizontal scrolling; otherwise, <strong><seecref="F:SharpDX.Result.False"/></strong>. </p><strong>Windows?XP:??</strong>This member is only supported starting with Windows?Vista. </dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RID_DEVICE_INFO_MOUSE::fHasHorizontalWheel']/*"/>
<p>Each <strong>WM_INPUT</strong> can indicate several inputs, but all of the inputs come from the same HID. The size of the <strong>bRawData</strong> array is <strong>dwSizeHid</strong> * <strong>dwCount</strong>.</p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWHID']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWHID::dwSizeHid']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWHID::dwCount']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWHID::bRawData']/*"/>
<p>The handle to this structure is passed in the <em>lParam</em> parameter of <strong>WM_INPUT</strong>.</p><p>To get detailed information -- such as the header and the content of the raw input -- call <strong>GetRawInputData</strong>.</p><p>To read the <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> in the message loop as a buffered read, call <strong>GetRawInputBuffer</strong>. </p><p>To get device specific information, call <strong>GetRawInputDeviceInfo</strong> with the <em>hDevice</em> from <strong><seecref="T:SharpDX.RawInput.RawInputHeader"/></strong>.</p><p>Raw input is available only when the application calls <strong>RegisterRawInputDevices</strong> with valid device specifications. </p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT::header']/*"/>
<dd><dl><dt><strong>mouse</strong></dt><dd><p></p></dd><dd><p>If the data comes from a mouse, this is the raw input data. </p></dd><dt><strong>keyboard</strong></dt><dd><p></p></dd><dd><p>If the data comes from a keyboard, this is the raw input data. </p></dd><dt><strong>hid</strong></dt><dd><p></p></dd><dd><p>If the data comes from an HID, this is the raw input data. </p></dd></dl></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT::data']/*"/>
<p>If <strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoLegacy"/></strong> is set for a mouse or a keyboard, the system does not generate any legacy message for that device for the application. For example, if the mouse TLC is set with <strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoLegacy"/></strong>, <strong>WM_LBUTTONDOWN</strong> and related legacy mouse messages are not generated. Likewise, if the keyboard TLC is set with <strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoLegacy"/></strong>, <strong><seecref="F:SharpDX.RawInput.KeyState.KeyDown"/></strong> and related legacy keyboard messages are not generated.</p><p>If <strong><seecref="F:SharpDX.RawInput.DeviceFlags.Remove"/></strong> is set and the <strong>hwndTarget</strong> member is not set to <strong><c>null</c></strong>, then parameter validation will fail.</p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICE::usUsagePage']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICE::usUsage']/*"/>
<dd><p>Mode flag that specifies how to interpret the information provided by <strong>usUsagePage</strong> and <strong>usUsage</strong>. It can be zero (the default) or one of the following values. By default, the operating system sends raw input from devices with the specified top level collection (TLC) to the registered application as long as it has the window focus. </p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.AppKeys"/></strong></dt><dt>0x00000400</dt></dl></td><td><p>If set, the application command keys are handled. <strong><seecref="F:SharpDX.RawInput.DeviceFlags.AppKeys"/></strong> can be specified only if <strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoLegacy"/></strong> is specified for a keyboard device.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.CaptureMouse"/></strong></dt><dt>0x00000200</dt></dl></td><td><p>If set, the mouse button click does not activate the other window.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.DeviceNotify"/></strong></dt><dt>0x00002000</dt></dl></td><td><p>If set, this enables the caller to receive <strong>WM_INPUT_DEVICE_CHANGE</strong> notifications for device arrival and device removal.</p><strong>Windows?XP:??</strong>This flag is not supported until Windows?Vista </td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.Exclude"/></strong></dt><dt>0x00000010</dt></dl></td><td><p>If set, this specifies the top level collections to exclude when reading a complete usage page. This flag only affects a TLC whose usage page is already specified with <strong><seecref="F:SharpDX.RawInput.DeviceFlags.PageOnly"/></strong>. </p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.ExclusiveInputSink"/></strong></dt><dt>0x00001000</dt></dl></td><td><p>If set, this enables the caller to receive input in the background only if the foreground application does not process it. In other words, if the foreground application is not registered for raw input, then the background application that is registered will receive the input.</p><strong>Windows?XP:??</strong>This flag is not supported until Windows?Vista </td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.InputSink"/></strong></dt><dt>0x00000100</dt></dl></td><td><p>If set, this enables the caller to receive the input even when the caller is not in the foreground. Note that <strong>hwndTarget</strong> must be specified.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoHotKeys"/></strong></dt><dt>0x00000200</dt></dl></td><td><p>If set, the application-defined keyboard device hotkeys are not handled. However, the system hotkeys; for example, ALT+TAB and CTRL+ALT+DEL, are still handled. By default, all keyboard hotkeys are handled. <strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoHotKeys"/></strong> can be specified even if <strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoLegacy"/></strong> is not specified and <strong>hwndTarget</strong> is <strong><c>null</c></strong>.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.NoLegacy"/></strong></dt><dt>0x00000030</dt></dl></td><td><p>If set, this prevents any devices specified by <strong>usUsagePage</strong> or <strong>usUsage</strong> from generating legacy messages. This is only for the mouse and keyboard. See Remarks.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.PageOnly"/></strong></dt><dt>0x00000020</dt></dl></td><td><p>If set, this specifies all devices whose top level collection is from the specified <strong>usUsagePage</strong>. Note that <strong>usUsage</strong> must be zero. To exclude a particular top level collection, use <strong><seecref="F:SharpDX.RawInput.DeviceFlags.Exclude"/></strong>.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceFlags.Remove"/></strong></dt><dt>0x0000
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICE::dwFlags']/*"/>
<msdn-id>ms645565</msdn-id>
<unmanaged>unsigned int dwFlags</unmanaged>
<unmanaged-short>unsigned int dwFlags</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICE::hwndTarget']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICELIST']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICELIST::hDevice']/*"/>
<dd><p>The type of device. This can be one of the following values. </p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.HumanInputDevice"/></strong></dt><dt>2</dt></dl></td><td><p>The device is an HID that is not a keyboard and not a mouse.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.Keyboard"/></strong></dt><dt>1</dt></dl></td><td><p>The device is a keyboard.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.Mouse"/></strong></dt><dt>0</dt></dl></td><td><p>The device is a mouse.</p></td></tr></table><p>?</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTDEVICELIST::dwType']/*"/>
<msdn-id>ms645568</msdn-id>
<unmanaged>unsigned int dwType</unmanaged>
<unmanaged-short>unsigned int dwType</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTHEADER']/*"/>
<dd><p>The type of raw input. It can be one of the following values. </p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.HumanInputDevice"/></strong></dt><dt>2</dt></dl></td><td><p>Raw input comes from some device that is not a keyboard or a mouse.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.Keyboard"/></strong></dt><dt>1</dt></dl></td><td><p>Raw input comes from the keyboard.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.DeviceType.Mouse"/></strong></dt><dt>0</dt></dl></td><td><p>Raw input comes from the mouse.</p></td></tr></table><p>?</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTHEADER::dwType']/*"/>
<dd><p>The size, in bytes, of the entire input packet of data. This includes <strong><seecref="T:SharpDX.RawInput.RawInput"/></strong> plus possible extra input reports in the <strong><seecref="T:SharpDX.RawInput.RawHid"/></strong> variable length array. </p></dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTHEADER::dwSize']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTHEADER::hDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUTHEADER::wParam']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT_INNER_0']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT_INNER_0::mouse']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT_INNER_0::keyboard']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWINPUT_INNER_0::hid']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD::MakeCode']/*"/>
<dd><p>Flags for scan code information. It can be one or more of the following.</p><table><tr><th>Value</th><th>Meaning</th></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.ScanCodeFlags.Break"/></strong></dt><dt>1</dt></dl></td><td><p>The key is up.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.ScanCodeFlags.E0"/></strong></dt><dt>2</dt></dl></td><td><p>This is the left version of the key.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.ScanCodeFlags.E1"/></strong></dt><dt>4</dt></dl></td><td><p>This is the right version of the key.</p></td></tr><tr><td><dl><dt><strong><seecref="F:SharpDX.RawInput.ScanCodeFlags.Make"/></strong></dt><dt>0</dt></dl></td><td><p>The key is down.</p></td></tr></table><p>?</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD::Flags']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD::Reserved']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD::VKey']/*"/>
<dd><p>The corresponding window message, for example <strong><seecref="F:SharpDX.RawInput.KeyState.KeyDown"/></strong>, <strong><seecref="F:SharpDX.RawInput.KeyState.SystemKeyDown"/></strong>, and so forth. </p></dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD::Message']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='RAWKEYBOARD::ExtraInformation']/*"/>