code: def getStringDescriptor(self, descriptor, lang_id, errors='strict'):
          
          if descriptor == 0:
              return None
          descriptor_string = bytearray(STRING_LENGTH)
          try:
              received = mayRaiseUSBError(libusb1.libusb_get_string_descriptor(
                  self.__handle, descriptor, lang_id,
                  create_binary_buffer(descriptor_string)[0],
                  STRING_LENGTH,
              ))
          # pylint: disable=undefined-variable
          except USBErrorNotFound:
              # pylint: enable=undefined-variable
              return None
          if received < 2 or descriptor_string[1] != DT_STRING:
              raise ValueError('Invalid string descriptor')
          return descriptor_string[2:min(
              received,
              descriptor_string[0],
          )].decode('UTF-16-LE', errors=errors)
docs: Fetch description string for given descriptor and in given language.
          Use getSupportedLanguageList to know which languages are available.
          Return value is a unicode string.
          Return None if there is no such descriptor on device.