Поделиться через


функция обратного вызова DXGKDDI_RESTOREIMMUTABLEMIGRATIONDATA (d3dkmddi.h)

Принимающая ОС вызывает DxgkDdiRestoreImmutableMigrationData для восстановления неизменяемых данных, сохраненных драйвером на стороне отправки в предыдущем вызове DxgkDdiSaveImmutableMigrationData.

Синтаксис

DXGKDDI_RESTOREIMMUTABLEMIGRATIONDATA DxgkddiRestoreimmutablemigrationdata;

NTSTATUS DxgkddiRestoreimmutablemigrationdata(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_GPUP_RESTORE_IMMUTABLE_MIGRATION_DATA pArgs
)
{...}

Параметры

hAdapter

[in] Дескриптор для блока контекста, связанного с адаптером отображения. Ранее этот дескриптор отображался для dxgkrnl в параметре вывода MiniportDeviceContext функции DXGKDDI_ADD_DEVICE.

pArgs

[in] Указатель на структуру DXGKARG_GPUP_RESTORE_IMMUTABLE_MIGRATION_DATA, содержащую сведения, необходимые для восстановления неизменяемых данных.

Возвращаемое значение

DxgkDdiRestoreImmutableMigrationData возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код NTSTATUS, например код ошибки STATUS_OBJECT_TYPE_MISMATCH (см. примечания).

Замечания

В отличие от стороны сохранения и отправки, которая вызывается дважды, DxgkDdiRestoreImmutableMigrationData вызывается только один раз, так как он содержит все данные, необходимые для представления полного буфера данных на принимающей стороне KMD. Драйвер должен принимать данные и применять его к созданному VF, а также любому отслеживанию, и он должен проверить инвариантные данные, необходимые для успешного восстановления.

Буфер — это содержимое, заполненное на стороне источника в DxgkDdiSaveImmutableMigrationData, поэтому KMD должен отслеживать данные в общем типе. Также должна быть схема управления версиями, реализованная в данных содержимого, если данные могут потребоваться измениться с новыми драйверами, и эта схема должна быть частью проверки версии, выполняемой в целевом объекте.

Если данные указывают, что целевая система не настроена правильно, чтобы виртуальная машина была перенесена из источника, KMD должна выполнить следующее:

  1. Сообщите об этой проблеме с помощью DxgkCbLogEtwEvent с идентификатором GUID_DxgkAzureTriageEvent и конкретными сведениями о том, что не удалось проверить, чтобы проблема была исправлена и исправлена.
  2. Вернитесь из этого вызова DDI с ошибкой STATUS_OBJECT_TYPE_MISMATCH.

DxgkDdiRestoreImmutableMigrationData должен вызываться только для виртуальных машин, которые в настоящее время приостановлены.

Дополнительные сведения см. в динамической миграции на устройствах GPU-P.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 11 версии 24H2 (WDDM 3.2)
заголовка d3dkmddi.h
IRQL PASSIVE_LEVEL

См. также

DXGKARG_GPUP_RESTORE_IMMUTABLE_MIGRATION_DATA

DxgkDdiSaveImmutableMigrationData