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

另请参阅

D3DKMT_LOCK