Compartilhar via


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

Confira também

D3DKMT_LOCK