| Предыдущий | Следующий |
| WHV_E_VP_DOES_NOT_EXIST | WHV_E_INVALID_VP_REGISTER_NAME |
WHV_E_INVALID_VP_STATE
Вызовы управления виртуальным процессором предъявляют требования к параллелизму и состоянию
WHV_E_INVALID_VP_STATE указывает, что виртуальный процессор существует, но его текущее состояние выполнения не допускает запрошенную операцию. Типичной границей является WHvRunVirtualProcessor: пока виртуальный процессор выполняется в одном потоке, другому управляющему пути может потребоваться отменить выполнение и дождаться возврата вызова, прежде чем изменять или уничтожать состояние.
Сброс раздела, удаление виртуального процессора, обновление регистров и одновременные попытки запуска могут нарушить порядок операций. Немедленные повторные попытки из нескольких потоков обычно сохраняют гонку, а не устраняют её.
Что проверить и как подтвердить исправление
- Назначьте каждому виртуальному процессору единственного владельца выполнения и не допускайте одновременных
WHvRunVirtualProcessor. - Используйте
WHvCancelRunVirtualProcessorи дождитесь завершения вызова запуска до уничтожения или несовместимых обновлений. - При ошибке записывайте запрошенный API, индекс виртуального процессора и переход состояния контроллера.
- Сериализуйте сброс раздела и удаление виртуального процессора относительно всех активных процессорных потоков.
- Рассматривайте повторяющиеся результаты недопустимого состояния как ошибку жизненного цикла в стеке виртуализации, а не как обратное давление гостевой нагрузки.
Ссылки
- Microsoft: WHvRunVirtualProcessor
- Microsoft: WHvCancelRunVirtualProcessor
- Microsoft: API Windows Hypervisor Platform
Нужно найти другой код? Найти другой код состояния или ошибки.