DXGKDDI_MIRACAST_HANDLE_IO_CONTROL função de retorno de chamada (dispmprt.h)
Chamado pelo sistema operacional para solicitar que o driver de miniporto de exibição processe uma solicitação de controle de E/S síncrona em resposta a uma chamada de driver de exibição no modo de usuário para a função MiracastIoControl .
Sintaxe
DXGKDDI_MIRACAST_HANDLE_IO_CONTROL DxgkddiMiracastHandleIoControl;
NTSTATUS DxgkddiMiracastHandleIoControl(
[in] PVOID DriverContext,
[in] PVOID MiracastContext,
[in] ULONG InputBufferSize,
[in] VOID *pInputBuffer,
[in] ULONG OutputBufferSize,
[out] VOID *pOutputBuffer,
[out] ULONG *BytesReturned
)
{...}
Parâmetros
[in] DriverContext
Um identificador para um bloco de contexto associado a um adaptador de exibição. A função DxgkDdiAddDevice do driver de miniporta de exibição forneceu anteriormente esse identificador para o subsistema de kernel de elementos gráficos DirectX.
[in] MiracastContext
O contexto do dispositivo Miracast, fornecido pelo sistema operacional. Esse contexto foi fornecido pelo driver de miniporto de exibição em uma chamada para a função DxgkDdiMiracastCreateContext .
[in] InputBufferSize
Fornecido pelo sistema operacional como o tamanho, em bytes, do buffer de entrada apontado por pInputBuffer. Esse valor se originou como o parâmetro InputBufferSize da função MiracastIoControl do modo de usuário.
[in] pInputBuffer
Fornecido pelo sistema operacional como um ponteiro para o buffer de entrada. Esse valor se originou como o parâmetro InputBufferSize da função MiracastIoControl do modo de usuário.
InputBufferSize especifica o tamanho do buffer.
[in] OutputBufferSize
Fornecido pelo sistema operacional como o tamanho, em bytes, do buffer de saída apontado por pOutputBuffer.
Esse valor se originou como o parâmetro OutputBufferSize da função MiracastIoControl do modo de usuário.
[out] pOutputBuffer
Fornecido pelo sistema operacional como um ponteiro para o buffer de saída. Esse valor se originou como o parâmetro pOutputBuffer da função MiracastIoControl do modo de usuário.
OutBufferSize especifica o tamanho do buffer.
[out] BytesReturned
Fornecido pelo sistema operacional como um ponteiro para um buffer que contém um valor de tipo ULONG que é o número de bytes que o driver de miniporto de exibição retornou no buffer apontado por pOutputBuffer.
Retornar valor
Retorna STATUS_SUCCESS se for bem-sucedido. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Comentários
O sistema operacional garante que uma chamada para DxgkDdiMiracastIoControl ocorra no mesmo espaço de processo em que a solicitação MiracastIoControl no modo de usuário é chamada.
Embora o sistema operacional simplesmente copie os valores dos tamanhos do buffer de entrada e saída dos respectivos parâmetros de MiracastIoControl, o driver de miniporto de exibição é responsável por verificar os tamanhos de buffer antes de usar os buffers. Além disso, o driver deve executar operações de investigação dentro de um bloco try/except chamando, usando as funções ProbeForRead e/ou ProbeForWrite , para verificar qualquer memória do modo de usuário para a qual os buffers de entrada apontam.
Essa operação de controle de E/S é processada de forma síncrona com uma chamada para a função MiracastIoControl no modo de usuário.
Sincronização
O sistema operacional agrupa as funções DxgkDdiMiracastCreateContext, DxgkDdiMiracastDestroyContext e DxgkDdiMiracastIoControl como uma classe Miracast .O nível de threading e sincronização dessa função é definido pela forma como o driver do modo de usuário define o parâmetro HardwareAccess em uma chamada para a função MiracastIoControl :
- Se HardwareAccess for FALSE, o sistema operacional garantirá que DxgkDdiMiracastIoControl siga o modo de sincronização de segundo nível, conforme definido em Threading e Sincronização de Segundo Nível. DxgkDdiMiracastIoControl pode ser chamado quando outras classes de nível 0, 1 ou não Miracast de funções de nível 2 estão sendo chamadas em outro contexto de thread. No entanto, apenas uma das funções de classe Miracast de nível 2 pode ser chamada por vez.
- Se HardwareAccess for TRUE, DxgkDdiMiracastIoControl seguirá o modo de sincronização de terceiro nível, conforme definido em Threading e Sincronização de Terceiro Nível. Observe que a liberação da GPU criará uma sobrecarga substancial de processamento.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8.1 |
Servidor mínimo com suporte | Windows Server 2012 R2 |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dispmprt.h (inclua Dispmprt.h) |
IRQL | PASSIVE_LEVEL |