def METHOD_NAME(self, index, attribute_id):  # noqa: N802
    handle_ctype = _visatype.ViSession(self._handle)  # case S110
    index_ctype = _visatype.ViInt32(index)  # case S150
    attribute_id_ctype = _visatype.ViInt32(attribute_id)  # case S150
    attribute_value_buffer_size_ctype = _visatype.ViInt32()  # case S170
    attribute_value_ctype = None  # case C050
    error_code = self._library.niModInst_GetInstalledDeviceAttributeViString(handle_ctype, index_ctype, attribute_id_ctype, attribute_value_buffer_size_ctype, attribute_value_ctype)
    errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=False)
    attribute_value_buffer_size_ctype = _visatype.ViInt32(error_code)  # case S180
    attribute_value_ctype = (_visatype.ViChar * attribute_value_buffer_size_ctype.value)()  # case C060
    error_code = self._library.niModInst_GetInstalledDeviceAttributeViString(handle_ctype, index_ctype, attribute_id_ctype, attribute_value_buffer_size_ctype, attribute_value_ctype)
    errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
    return attribute_value_ctype.value.decode(self._encoding)