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


Функция D3DKMTLock (d3dkmthk.h)

Функция D3DKMTLock блокирует все выделение или определенные страницы в выделении.

Синтаксис

NTSTATUS D3DKMTLock(
  D3DKMT_LOCK *unnamedParam1
);

Параметры

unnamedParam1

pData [in, out]

Указатель на структуру D3DKMT_LOCK , описывающую параметры для блокировки выделения.

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

D3DKMTLock возвращает одно из следующих значений:

Код возврата Описание
STATUS_SUCCESS Выделение было успешно заблокировано.
STATUS_DEVICE_REMOVED Графический адаптер был остановлен или устройство отображения было сброшено.
STATUS_INVALID_PARAMETER Параметры были проверены и определены как неверные.
STATUS_GRAPHICS_ALLOCATION_BUSY Выделение в настоящее время используется и не может быть заблокировано.
STATUS_GRAPHICS_TOO_MANY_REFERENCES На выделение находилось слишком много ссылок.
STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Не удалось заблокировать выделение, так как диафрагма дескриптуры была недоступна, а выделение закреплено и не может быть вытеснено.

Эта функция также может возвращать другие значения NTSTATUS.

Комментарии

Функция D3DKMTLock вызывается для доступа к системным выделениям памяти и видеопамям.

Примеры

В следующем примере кода показано, как OpenGL ICD может использовать D3DKMTLock для блокировки всего выделения.

VOID* LockEntireAllocation(D3DKMT_HANDLE hDevice, D3DKMT_HANDLE hAllocation, UINT PrivateData)
{
    D3DKMT_LOCK LockAllocation = {0};

    LockAllocation.hDevice = hDevice;
    LockAllocation.hAllocation = LockData.hAllocation;
    LockAllocation.Flags.LockEntire = TRUE;
    LockAllocation.PrivateDriverData = PrivateData;
    LockAllocation.NumPages = 0;
    LockAllocation.pPages = NULL;
 
    if (NT_SUCCESS((*pfnKTLock)(&LockAllocation))) {
        return LockAllocation.pData;
    }
    return NULL;
}

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Целевая платформа Универсальное
Верхняя часть d3dkmthk.h (включая D3dkmthk.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

D3DKMT_LOCK