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


Функция 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 (include D3dkmthk.h)
библиотеки Gdi32.lib
DLL Gdi32.dll

См. также

D3DKMT_LOCK