def FillDeviceCapabilities(device, descriptor):
  """Fill out device capabilities.

  Fills the HidCapabilitites of the device into descriptor.

  Args:
    device: A handle to the open device
    descriptor: DeviceDescriptor to populate with the
      capabilities

  Returns:
    none

  Raises:
    WindowsError when unable to obtain capabilitites.
  """
  preparsed_data = PHIDP_PREPARSED_DATA(0)
  ret = hid.HidD_GetPreparsedData(device, ctypes.byref(preparsed_data))
  if not ret:
    raise ctypes.WinError()

  try:
    caps = HidCapabilities()
    ret = hid.HidP_GetCaps(preparsed_data, ctypes.byref(caps))

    if ret != HIDP_STATUS_SUCCESS:
      raise ctypes.WinError()

    descriptor.usage = caps.Usage
    descriptor.usage_page = caps.UsagePage
    descriptor.internal_max_in_report_len = caps.InputReportByteLength
    descriptor.internal_max_out_report_len = caps.OutputReportByteLength

  finally:
    hid.HidD_FreePreparsedData(preparsed_data)
def FillDeviceCapabilities ( device , descriptor ) : preparsed_data = PHIDP_PREPARSED_DATA ( 0 ) ret = hid . HidD_GetPreparsedData ( device , ctypes . byref ( preparsed_data ) ) if not ret : raise ctypes . WinError ( ) try : caps = HidCapabilities ( ) ret = hid . HidP_GetCaps ( preparsed_data , ctypes . byref ( caps ) ) if ret != HIDP_STATUS_SUCCESS : raise ctypes . WinError ( ) descriptor . usage = caps . Usage descriptor . usage_page = caps . UsagePage descriptor . internal_max_in_report_len = caps . InputReportByteLength descriptor . internal_max_out_report_len = caps . OutputReportByteLength finally : hid . HidD_FreePreparsedData ( preparsed_data )
Fill out device capabilities.

  Fills the HidCapabilitites of the device into descriptor.

  Args:
    device: A handle to the open device
    descriptor: DeviceDescriptor to populate with the
      capabilities

  Returns:
    none

  Raises:
    WindowsError when unable to obtain capabilitites.