Compartilhar via


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

Confira também

DxgkDdiAddDevice

DxgkDdiMiracastCreateContext

MiracastIoControl

ProbeForRead

ProbeForWrite