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 | deswizzling 조리개는 사용할 수 없으며 할당이 고정되어 제거될 수 없기 때문에 할당을 잠글 수 없습니다. |
이 함수는 다른 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 |