Função D3DKMTLock (d3dkmthk.h)
A função D3DKMTLock bloqueia uma alocação inteira ou páginas específicas dentro de uma alocação.
Sintaxe
NTSTATUS D3DKMTLock(
D3DKMT_LOCK *unnamedParam1
);
Parâmetros
unnamedParam1
pData [in, out]
Um ponteiro para uma estrutura D3DKMT_LOCK que descreve parâmetros para bloquear uma alocação.
Retornar valor
D3DKMTLock retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
STATUS_SUCCESS | A alocação foi bloqueada com êxito. |
STATUS_DEVICE_REMOVED | O adaptador gráfico foi interrompido ou o dispositivo de exibição foi redefinido. |
STATUS_INVALID_PARAMETER | Os parâmetros foram validados e determinados como incorretos. |
STATUS_GRAPHICS_ALLOCATION_BUSY | A alocação estava em uso no momento e não pôde ser bloqueada. |
STATUS_GRAPHICS_TOO_MANY_REFERENCES | Muitas referências estavam pendentes na alocação. |
STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION | A alocação não pôde ser bloqueada porque uma abertura de deswizzling não estava disponível e porque a alocação está fixada e não pôde ser removida. |
Essa função também pode retornar outros valores NTSTATUS.
Comentários
A função D3DKMTLock é chamada para acessar alocações de memória do sistema e alocações de memória de vídeo.
Exemplos
O exemplo de código a seguir demonstra como um OpenGL ICD pode usar D3DKMTLock para bloquear uma alocação inteira.
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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Plataforma de Destino | Universal |
Cabeçalho | d3dkmthk.h (inclua D3dkmthk.h) |
Biblioteca | Gdi32.lib |
DLL | Gdi32.dll |