Функция 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 |