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