PFND3DDDI_LOCK função de retorno de chamada (d3dumddi.h)
A função Bloquear 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 [dentro, fora]
Um ponteiro para uma estrutura D3DDDIARG_LOCK que descreve o recurso ou a superfície dentro do recurso a ser bloqueado.
Valor de retorno
Lock retorna um dos seguintes valores:
Código de retorno | descrição |
---|---|
S_OK | O recurso é bloqueado com êxito. |
E_OUTOFMEMORY | O bloqueio não pôde alocar a memória necessária para que ele seja concluído. |
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. |
Observações
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 de Bloqueio, 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 no modo de usuário pode alocar várias alocações para cada recurso ou superfície, o driver de exibição no modo de usuário pode ser necessário para converter ou processar adequadamente o ponteiro de alocação retornado de pfnLockCb antes de retornar a chamada bloqueio de para o runtime.
Normalmente, as chamadas para de Bloqueio são seguidas por chamadas correspondentes à função Desbloquear do driver antes que o driver receba chamadas para suas funções primitivas de desenho (ou seja, chamadas para DrawIndexedPrimitive, DrawIndexedPrimitive2, DrawPrimitivee DrawPrimitive2). Essa ordem garante que um driver nunca seja solicitado a extrair de um recurso bloqueado. No entanto, às vezes, 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 MightDrawFromLocked campo de bits no Flags membro 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 tomar 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 no 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 o pfnRenderCb do runtime função de retorno de chamada) todos os comandos pendentes conforme necessário.
- Chamar pfnLockCb com o identificador de alocação apropriado para comandos que já foram enviados ao hardware.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows. |
da Plataforma de Destino | Universal |
cabeçalho | d3dumddi.h (inclua D3dumddi.h) |