Что означает код HRESULT 0x80370306 (WHV_E_VP_ALREADY_EXISTS)?

 
Предыдущий Следующий
WHV_E_GPA_RANGE_NOT_FOUND WHV_E_VP_DOES_NOT_EXIST

WHV_E_VP_ALREADY_EXISTS

Индексы виртуальных процессоров уникальны внутри раздела WHP

WHV_E_VP_ALREADY_EXISTS возвращается, когда вызывающая сторона пытается создать виртуальный процессор с индексом, уже существующим в разделе. На x64 индекс также определяет APIC ID процессора, поэтому незаметная подстановка другого индекса меняет видимую гостю топологию.

Дубликат часто возникает из-за повторной инициализации, частичного повтора после успешного создания или двух потоков, строящих один раздел. Правильное исправление — сделать состояние создания явным, а не игнорировать каждую ошибку из WHvCreateVirtualProcessor.

Что проверить и как подтвердить исправление

  • Отслеживайте созданные индексы VP в состоянии, принадлежащем разделу, и сериализуйте построение топологии.
  • Определите, не завершился ли предыдущий вызов создания успешно до тайм-аута вызывающей стороны или потери результата.
  • Сопоставьте индексы с настроенным числом процессоров и предполагаемой гостевой топологией.
  • Удаляйте существующий VP только когда он больше не выполняется и владение демонтажем однозначно.
  • Пусть логика повтора продолжает работу с известного состояния, а не безусловно воспроизводит все вызовы создания.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.