функция обратного вызова 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 должна выполнить следующее:
- Сообщите об этой проблеме с помощью DxgkCbLogEtwEvent с идентификатором GUID_DxgkAzureTriageEvent и конкретными сведениями о том, что не удалось проверить, чтобы проблема была исправлена и исправлена.
- Вернитесь из этого вызова DDI с ошибкой STATUS_OBJECT_TYPE_MISMATCH.
DxgkDdiRestoreImmutableMigrationData должен вызываться только для виртуальных машин, которые в настоящее время приостановлены.
Дополнительные сведения см. в динамической миграции на устройствах GPU-P.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 11 версии 24H2 (WDDM 3.2) |
заголовка | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |