How do I override field_multiple_value_form()? I have to override the standard field wrappers which add additional divs.

Drupal uses the following code, in field_multiple_value_form().

$field_elements += array(
  '#theme' =&gt; 'field_multiple_value_form',
  '#field_name' =&gt; $field['field_name'],
  '#cardinality' =&gt; $field['cardinality'],
  '#title' =&gt; $title,
  '#required' =&gt; $instance['required'],
  '#description' =&gt; $description,
  '#prefix' =&gt; '&lt;div id="' . $wrapper_id . '"&gt;',
  '#suffix' =&gt; '&lt;/div&gt;',
  '#max_delta' =&gt; $max,
); 


I implemented hook_form_alter(), but this form needs extra data that are passed as argument: $field, $instance, $langcode, $items, $form, and $form_state.

How do I define hook_form_alter() in this case?
You need to implement hook_field_widget_form_alter(), which is invoked from field_multiple_value_form() using the following code.

  $element = array(
    '#entity_type' =&gt; $instance['entity_type'], 
    '#entity' =&gt; $form['#entity'], 
    '#bundle' =&gt; $instance['bundle'], 
    '#field_name' =&gt; $field_name, 
    '#language' =&gt; $langcode, 
    '#field_parents' =&gt; $parents, 
    '#columns' =&gt; array_keys($field['columns']),
    // For multiple fields, title and description are handled by the wrapping table. 
    '#title' =&gt; $multiple ? '' : $title, 
    '#description' =&gt; $multiple ? '' : $description,
    // Only the first widget should be required. 
    '#required' =&gt; $delta == 0 &amp;&amp; $instance['required'], 
    '#delta' =&gt; $delta, 
    '#weight' =&gt; $delta,
  );
  if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
    // Input field for the delta (drag-n-drop reordering).
    if ($multiple) {
      // We name the element '_weight' to avoid clashing with elements
      // defined by widget.
      $element['_weight'] = array(
        '#type' =&gt; 'weight', 
        '#title' =&gt; t('Weight for row @number', array('@number' =&gt; $delta + 1)), 
        '#title_display' =&gt; 'invisible',
        // Note: this 'delta' is the FAPI 'weight' element's property. 
        '#delta' =&gt; $max, 
        '#default_value' =&gt; isset($items[$delta]['_weight']) ? $items[$delta]['_weight'] : $delta, 
        '#weight' =&gt; 100,
      );
    }

    // Allow modules to alter the field widget form element.
    $context = array(
      'form' =&gt; $form, 
      'field' =&gt; $field, 
      'instance' =&gt; $instance, 
      'langcode' =&gt; $langcode, 
      'items' =&gt; $items, 
      'delta' =&gt; $delta,
    );
    drupal_alter(array('field_widget_form', 'field_widget_' . $instance['widget']['type'] . '_form'), $element, $form_state, $context);

    $field_elements[$delta] = $element;
  }


For example, you could implement it using the following code.

function mymodule_field_widget_form_alter(&amp;$element, &amp;$form_state, $context) {
  $element['#prefix'] = $element['#suffix'] = '';
}


The arguments passed to field_multiple_value_form() are also passed to hook_field_widget_form_alter(), directly, or contained in $context.