Compartilhar via


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.
O driver de exibição do modo de usuário retorna um ponteiro para a memória da superfície bloqueada e o tom da superfície no pSurfData e membros do Pitch membros da estrutura D3DDDIARG_LOCK. No entanto, para superfícies de memória do sistema pré-alocadas, o runtime ignora a memória e o tom definidos pelo driver, embora o driver ainda possa falhar na chamada Bloquear (e, portanto, fazer failback para o aplicativo). O runtime define o sinalizador NotifyOnly campo de bits no Flags membro da estrutura D3DDDIARG_LOCK para diferenciar as chamadas Lock que bloqueiam superfícies de memória do sistema pré-alocadas de outras chamadas de de bloqueio de.

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)

Consulte também

D3DDDIARG_LOCK

D3DDDI_ALLOCATIONINFO

D3DDDI_DEVICEFUNCS

pfnLockCb

pfnRenderCb