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) |
Library | Gdi32.lib |
DLL | Gdi32.dll |