title: GetRawInputDeviceInfo returns wrong syntax of USB HID device name in Windows XP
body: <p>I'm using <code>GetRawInputDeviceInfo</code> to get the device name of a USB HID device name.</p>
  
  <p>For some reason, when I run my code under Windows XP I get a device name which starts with <code>\??\</code> and not <code>\\?\</code>.</p>
  
  <p>This of course means, that when I try to use this device name (in <code>CreateFile</code> for example" it does not work. If I edit the device name and manually fix it to be <code>\\?\</code> everything works great.</p>
  
  <p>This does not happens in Windows 7. In Win7 everything works great.</p>
  
  <p>I also test for <code>GetLastError</code> after every API call and no errors occur.</p>
  
  <p>All my OS's are 32 bit and my project is compiling with unicode.</p>
  
  <p>Any suggestions what am I doing wrong?? Here's a code snippets from my console application which gets the device name.</p>
  
  <pre><code>nResult = GetRawInputDeviceInfo( pDeviceList[i].hDevice, RIDI_DEVICENAME, NULL, &amp;nBufferSize );
  if( nResult &lt; 0 )
  {
  cout &lt;&lt; "ERR: Unable to get Device Name character count.." &lt;&lt; endl;
  return false;
  }
  WCHAR* wcDeviceName = new WCHAR[ nBufferSize + 1 ];
  if( wcDeviceName == NULL )
  {
  cout &lt;&lt; "ERR: Unable to allocate memory for Device Name.." &lt;&lt; endl;
  return false;
  }
  nResult = GetRawInputDeviceInfo( pDeviceList[i].hDevice, RIDI_DEVICENAME, wcDeviceName, &amp;nBufferSize );
  if( nResult &lt; 0 )
  {
  cout &lt;&lt; "ERR: Unable to get Device Name.." &lt;&lt; endl;
  delete [] wcDeviceName;
  return false;
  }
  wcDeviceName[1]='\\';
  //This is the manual fix for the device name in WinXP. How do I get rid of it????
  pDesc-&gt;hHandle = CreateFile(wcDeviceName, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
  ...
  
  ...
  </code></pre>