Я разрабатываю клиентские и серверные системы с IOCP уже более 10 лет, и я никогда не видел частичного завершения записи при обычном использовании. Вы МОЖЕТЕ получить их, но если вы это сделаете, то, скорее всего, ваш сервер все-таки хрен; вы, скорее всего, получите завершение записи с ошибкой ENOBUFS, которая, как правило, означает, что вы исчерпали пул невыгружаемых страниц или превысили лимит заблокированных страниц.
ИМХО, вы должны управлять своими ресурсами так, чтобы никогда не превышать эти ограничения операционной системы.
Если завершение записи возвращает меньше, чем количество байтов, которое, по вашему мнению, должно было быть записано, то на самом деле мало что можно сделать, чтобы восстановить, если у вас есть еще ожидающие записи. В приведенном в вашем вопросе примере, если произошел сбой A, вы могли бы действительно отключить соединение, так как B и C могли бы преуспеть. На практике вам не нужно беспокоиться о чем-то большем.
Если вы знаете, что у вас больше нет ожидающих записи по этому соединению, тогда вы МОЖЕТЕ выполнить другую запись для записи последующих данных.
И TCP не входит в это вообще.