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 um DxgkProtectedCallback fornecido rotina de retorno de chamada 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 devicehandle membro 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 seguintes valores de sinalizador de bit, 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; esta é uma operação cara. Se o parâmetro Attributes não estiver definido para esse valor, o acesso a superfícies bloqueadas na memória do sistema será suspenso.
DXGK_EXCLUDE_CALL_SYNCHRONOUS
Executa o DxgkProtectedCallback protegido rotina de retorno de chamada do driver no mesmo contexto de thread que o chamador. O chamador deve estar chamando de um segundo nível ou terceiro nível chamada DDI sincronizada. Caso contrário, a função DxgkCbExcludeAdapterAccess falhará.
DXGK_EXCLUDE_BRIDGE_ACCESS
Protege o acesso à porta raiz do PCI Express (PCIe) quando o driver precisa acessar o espaço de configuração da porta raiz. Defina o parâmetro atributos para esse valor antes de chamar DxgkCbReadDeviceSpace ou funções de 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 tiver sido interrompido.
[in] ProtectedCallbackContext
Um ponteiro para o valor a ser passado para o parâmetro ProtectedCallbackContext da rotina de retorno de chamada DxgkProtectedCallback.
Valor de retorno
DxgkCbExcludeAdapterAccess retornará STATUS_SUCCESS se tiver êxito. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Observações
As solicitações de aplicativo serão bloqueadas até que essa função retorne. Nesse estado protetor, a rotina de retorno de chamada DxgkProtectedCallback fornecida é chamada em IRQL = PASSIVE_LEVEL.
DxgkCbExcludeAdapterAccess adquire acesso exclusivo ao adaptador para impedir operações de E/S relacionadas a elementos gráficos para o adaptador de exibição e todos os links. Isso efetivamente ociosa a GPU durante toda a duração da chamada.
Essa função também impede todo o acesso de espaço de configuração de PCI à porta raiz do PCI Express (PCIe) se DXGK_EXCLUDE_BRIDGE_ACCESS for especificado no parâmetro atributos.
O driver não deve bloquear a execução contínua do thread de chamada aguardando o retorno do DxgkProtectedCallback rotina de retorno de chamada. 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 UseAlternateVA sinalizador de campo de bit no Flags membro 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 |
---|---|
de cliente com suporte mínimo | Windows Vista |
da Plataforma de Destino | Área de trabalho |
cabeçalho | dispmprt.h (inclua Dispmprt.h) |
IRQL | PASSIVE_LEVEL |