DXGKCB_MIRACAST_SEND_MESSAGE função de retorno de chamada (dispmprt.h)
Envia uma mensagem assíncrona para o driver de exibição do modo de usuário.
Sintaxe
DXGKCB_MIRACAST_SEND_MESSAGE DxgkcbMiracastSendMessage;
NTSTATUS DxgkcbMiracastSendMessage(
[in] HANDLE MiracastHandle,
[in] ULONG InputBufferSize,
[in] VOID *pInputBuffer,
[in] ULONG OutputBufferSize,
[out] VOID *pOutputBuffer,
[in, optional] DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK pCallback,
[in, optional] PVOID pCallbackContext
)
{...}
Parâmetros
[in] MiracastHandle
Um identificador fornecido pelo driver para o dispositivo de exibição Miracast. Esse identificador foi originalmente passado no membro MiracastHandle da estrutura DXGK_MIRACAST_DISPLAY_CALLBACKS em uma chamada para a função DxgkDdiMiracastCreateContext .
[in] InputBufferSize
O tamanho, em bytes, do buffer de entrada apontado por pInputBuffer.
[in] pInputBuffer
Um ponteiro para o buffer de entrada. InputBufferSize especifica o tamanho do buffer.
Consulte Comentários para obter mais informações sobre o buffer de entrada.
[in] OutputBufferSize
O tamanho, em bytes, do buffer de saída apontado por pOutputBuffer.
[out] pOutputBuffer
Um ponteiro para o buffer de saída. OutBufferSize especifica o tamanho do buffer.
Consulte Comentários para obter mais informações sobre o buffer de saída.
[in, optional] pCallback
Um ponteiro opcional, fornecido pelo driver de miniporto de exibição, para a função de retorno de chamada DxgkCbMiracastSendMessageCallback .
Se o driver de miniporto de exibição fornecer o ponteiro para DxgkCbMiracastSendMessageCallback, depois que o driver do modo de usuário manipular a mensagem, o sistema operacional enviará uma mensagem para o driver do modo de usuário de forma assíncrona chamando DxgkCbMiracastSendMessageCallback.
Confira As seções Valor retornado e Comentários para obter mais informações sobre chamadas para DxgkCbMiracastSendMessageCallback.
[in, optional] pCallbackContext
Um ponteiro opcional fornecido pelo driver para o contexto de retorno de chamada fornecido pelo driver. O sistema operacional passa esse contexto para a rotina de retorno de chamada fornecida pelo driver após a conclusão da operação.
Retornar valor
Retorna STATUS_PENDING se ele entregar com êxito a mensagem. Caso contrário, ele retornará um dos códigos de erro definidos em Ntstatus.h.
Se o driver de miniporto de exibição precisar saber o status do tratamento de mensagens no modo de usuário, ele deverá fornecer a função DxgkCbMiracastSendMessageCallback no parâmetro pCallback e marcar o retorno status no parâmetro pIoStatusBlock dessa função.
Comentários
Se o driver de miniporto de exibição fornecer os buffers pInputBuffer e pOutputBuffer , é responsabilidade do driver manter esses dois buffers até que a função DxgkCbMiracastSendMessageCallback seja chamada. Caso contrário, um problema aleatório de corrupção de memória pode ser criado.
Se o driver fornecer o DxgkCbMiracastSendMessageCallback no parâmetro pCallback , é possível que DxgkCbMiracastSendMessageCallback retorne antes que DxgkCbMiracastSendMessage retorne.
Exemplo de sequência de chamadas
Aqui está o código de exemplo que mostra como usar essa função:typedef struct _CALLBACK_CONTEXT
{
UCHAR InputBuffer[INPUT_BUFFER_SIZE];
UCHAR OutputBuffer[OUTPUT_BUFFER_SIZE];
} CALLBACK_CONTEXT, *PCALLBACK_CONTEXT;
...
_IRQL_requires_(PASSIVE_LEVEL)
VOID
DriverCallbackFunction(
_In_ PVOID Context,
_In_ PIO_STATUS_BLOCK pIoStatusBlock
)
{
PCALLBACK_CONTEXT CallbackContex = (PCALLBACK_CONTEXT)Context;
ExFreePool(CallbackContex);
}
...
CallbackContex = (PCALLBACK_CONTEXT)ExAllocatePoolWithTag(
PagedPool,
sizeof(CALLBACK_CONTEXT),
DRIVER_TAG);
if (CallbackContex == NULL)
{
return STATUS_NO_MEMORY;
}
RtlZeroMemory(CallbackContex, sizeof(CALLBACK_CONTEXT));
CallbackContex->InputBuffer[0] = 0xaa;
CallbackContex->InputBuffer[1] = 0x55;
Status =
pDeviceContext->MiracastCallbacks.DxgkCbMiracastSendMessage(
pDeviceContext->MiracastCallbacks.MiracastHandle,
sizeof(CallbackContex->InputBuffer),
CallbackContex->InputBuffer,
sizeof(CallbackContex->OutputBuffer),
CallbackContext->OutputBuffer,
&DriverCallbackFunction,
CallbackContex);
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
DXGK_MIRACAST_DISPLAY_CALLBACKS