| Предыдущий | Следующий |
| 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 только когда он больше не выполняется и владение демонтажем однозначно.
- Пусть логика повтора продолжает работу с известного состояния, а не безусловно воспроизводит все вызовы создания.
Ссылки
- Microsoft: WHvCreateVirtualProcessor
- Microsoft: WHvCreateVirtualProcessor2
- Microsoft: WHvDeleteVirtualProcessor
Нужно найти другой код? Найти другой код состояния или ошибки.