DXGKCB_EXCLUDE_ADAPTER_ACCESS função de retorno de chamada (dispmprt.h)
A função DxgkCbExcludeAdapterAccess impede todo o acesso ao adaptador de exibição e chama uma rotina de retorno de chamada DxgkProtectedCallback fornecida enquanto estiver nesse estado protegido.
Sintaxe
DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkcbExcludeAdapterAccess;
NTSTATUS DxgkcbExcludeAdapterAccess(
[in] HANDLE DeviceHandle,
[in] ULONG Attributes,
[in] DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
[in] PVOID ProtectedCallbackContext
)
{...}
Parâmetros
[in] DeviceHandle
Um identificador que representa um adaptador de exibição. O driver de miniporto de exibição obteve esse identificador no membro DeviceHandle da estrutura DXGKRNL_INTERFACE que foi passada para DxgkDdiStartDevice.
[in] Attributes
Um valor que especifica operações de memória de vídeo. Esse parâmetro pode ser qualquer combinação dos valores de sinalizador de bit a seguir, exceto que DXGK_EXCLUDE_EVICT_ALL e DXGK_EXCLUDE_CALL_SYNCHRONOUS são mutuamente exclusivos. Esses valores são definidos em Dispmprt.h.
DXGK_EXCLUDE_EVICT_ALL
Toda a memória de vídeo no adaptador é copiada para a memória do sistema; essa é uma operação cara. Se o parâmetro Attributes não estiver definido como esse valor, o acesso a superfícies bloqueadas na memória do sistema será suspenso.
DXGK_EXCLUDE_CALL_SYNCHRONOUS
Executa a rotina de retorno de chamada do driver DxgkProtectedCallback protegida no mesmo contexto de thread que o chamador. O chamador deve estar chamando de uma chamada DDI sincronizada de segundo ou terceiro nível . Caso contrário, a função DxgkCbExcludeAdapterAccess falhará.
DXGK_EXCLUDE_BRIDGE_ACCESS
Protege o acesso à porta raiz PCI Express (PCIe) quando o driver precisa acessar o espaço de configuração da porta raiz. Defina o parâmetro Attributes para esse valor antes de chamar as funções DxgkCbReadDeviceSpace ou DxgkCbWriteDeviceSpace com o parâmetro DataType definido como DXGK_WHICHSPACE_BRIDGE.
[in] DxgkProtectedCallback
A rotina de retorno de chamada a ser chamada novamente quando todo o acesso ao adaptador for interrompido.
[in] ProtectedCallbackContext
Um ponteiro para o valor a ser passado para o parâmetro ProtectedCallbackContext da rotina de retorno de chamada DxgkProtectedCallback .
Retornar valor
DxgkCbExcludeAdapterAccess retornará STATUS_SUCCESS se for bem-sucedido. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Comentários
As solicitações de aplicativo serão bloqueadas até que essa função retorne. Nesse estado de proteção, a rotina de retorno de chamada DxgkProtectedCallback fornecida é chamada em IRQL = PASSIVE_LEVEL.
O DxgkCbExcludeAdapterAccess adquire acesso exclusivo ao adaptador para evitar operações de E/S relacionadas a gráficos para o adaptador de exibição e todos os links. Isso efetivamente ociosa pela GPU durante toda a chamada.
Essa função também impede todo o acesso de espaço de configuração PCI à porta raiz PCI Express (PCIe) se DXGK_EXCLUDE_BRIDGE_ACCESS for especificado no parâmetro Attributes .
O driver não deve bloquear a execução contínua do thread de chamada aguardando o retorno da rotina de retorno de chamada DxgkProtectedCallback . Por exemplo, o driver pode agendar um thread de trabalho assíncrono para lidar com a rotina de retorno de chamada.
Uma exceção a esse bloqueio de solicitações de aplicativo ocorre quando o driver de exibição do modo de usuário definiu o sinalizador de campo de bits UseAlternateVA no membro Flags da estrutura D3DDDICB_LOCKFLAGS em uma chamada para a função pfnLockCb . DxgkCbExcludeAdapterAccess não bloqueia esse tipo de bloqueio de alocação e a CPU pode acessar o adaptador de exibição enquanto a rotina de retorno de chamada protegida está em execução.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dispmprt.h (inclua Dispmprt.h) |
IRQL | PASSIVE_LEVEL |