PFND3DDDI_LOCK função de retorno de chamada (d3dumddi.h)
A função Lock bloqueia o recurso especificado ou uma superfície dentro do recurso.
Sintaxe
PFND3DDDI_LOCK Pfnd3dddiLock;
HRESULT Pfnd3dddiLock(
HANDLE hDevice,
D3DDDIARG_LOCK *unnamedParam2
)
{...}
Parâmetros
hDevice
Um identificador para o dispositivo de exibição (contexto gráfico).
unnamedParam2
pData [in, out]
Um ponteiro para uma estrutura de D3DDDIARG_LOCK que descreve o recurso ou a superfície dentro do recurso a ser bloqueado.
Retornar valor
Lock retorna um dos seguintes valores:
Código de retorno | Descrição |
---|---|
S_OK | O recurso foi bloqueado com êxito. |
E_OUTOFMEMORY | O bloqueio não pôde alocar a memória necessária para que ela fosse concluída. |
D3DDDIERR_WASSTILLDRAWING | O recurso não estava ocioso quando o runtime do Microsoft Direct3D chamou a função Lock com o sinalizador de campo de bits DoNotWait definido no membro Flags do D3DDDIARG_LOCK . |
Comentários
O runtime do Microsoft Direct3D chama a função Lock do driver de exibição do modo de usuário para bloquear um recurso ou uma superfície dentro do recurso. Esse recurso ou superfície bloqueado pode ser lido ou gravado usando operações de leitura e gravação da CPU. Quando o runtime chama Lock, o driver de exibição do modo de usuário deve chamar a função de retorno de chamada pfnLockCb do runtime para bloquear uma alocação correspondente ao recurso ou à superfície. Observe que, como o driver de exibição do modo de usuário pode alocar várias alocações para cada recurso ou superfície, o driver de exibição do modo de usuário pode ser necessário para converter ou processar adequadamente o ponteiro de alocação retornado do pfnLockCb antes de retornar a chamada lock para o runtime.
Normalmente, as chamadas para Lock são seguidas por chamadas correspondentes à função Desbloqueio do driver antes que o driver receba chamadas para suas funções primitivas de desenho (ou seja, chamadas para DrawIndexedPrimitive, DrawIndexedPrimitive2, DrawPrimitive e DrawPrimitive2). Essa ordem garante que um driver nunca seja solicitado a extrair de um recurso bloqueado. No entanto, ocasionalmente, ao executar a transformação e a iluminação de software, o runtime deve chamar uma das funções primitivas de desenho do driver antes de desbloquear um recurso (atualmente, apenas buffers de vértice exibem esse comportamento). O runtime marca buffers de vértice nos quais esse comportamento incomum pode ocorrer com o sinalizador de campo de bits MightDrawFromLocked no membro Flags das estruturas D3DDDIARG_CREATERESOURCE e D3DDDIARG_LOCK (ou seja, na criação e no tempo de bloqueio). Quando o hardware é renderizado ativamente de um buffer de vértice bloqueado, o driver não é obrigado a executar nenhuma ação especial porque o runtime não substituirá nenhum dado no buffer de vértice bloqueado.
O runtime chama a função Lock do driver de exibição do modo de usuário para bloquear superfícies de memória do sistema pré-alocadas também. Essa operação permite que o driver de exibição do modo de usuário sincronize corretamente as referências a essas superfícies que podem estar no fluxo de comandos de hardware. O driver de exibição do modo de usuário pode realizar a sincronização:
- Liberação (ou seja, chamar a função de retorno de chamada pfnRenderCb do runtime ) todos os comandos pendentes conforme necessário.
- Chamando pfnLockCb com o identificador de alocação apropriado para comandos que já foram enviados ao hardware.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
Plataforma de Destino | Universal |
Cabeçalho | d3dumddi.h (inclua D3dumddi.h) |