DXGKCB_MIRACAST_SEND_MESSAGE función de devolución de llamada (dispmprt.h)
Envía un mensaje asincrónico al controlador de pantalla en modo de usuario.
Sintaxis
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
Identificador proporcionado por el controlador al dispositivo de visualización miracast. Este identificador se pasó originalmente en el miembro MiracastHandle de la estructura DXGK_MIRACAST_DISPLAY_CALLBACKS en una llamada a la función DxgkDdiMiracastCreateContext.
[in] InputBufferSize
Tamaño, en bytes, del búfer de entrada al que apunta pInputBuffer.
[in] pInputBuffer
Puntero al búfer de entrada. inputBufferSize especifica el tamaño del búfer.
Consulte Comentarios para obtener más información sobre el búfer de entrada.
[in] OutputBufferSize
Tamaño, en bytes, del búfer de salida al que apunta pOutputBuffer.
[out] pOutputBuffer
Puntero al búfer de salida. OutBufferSize especifica el tamaño del búfer.
Consulte Comentarios para obtener más información sobre el búfer de salida.
[in, optional] pCallback
Puntero opcional, proporcionado por el controlador de minipuerto de pantalla, a la función de devolución de llamada DxgkCbMiracastSendMessageCall back.
Si el controlador de minipuerto de pantalla proporciona el puntero para DxgkCbMiracastSendMessageCallback, después de que el controlador en modo de usuario controle el mensaje, el sistema operativo envía un mensaje al controlador en modo de usuario de forma asincrónica llamando a DxgkCbMiracastSendMessageCallback.
Consulte las secciones Valor devuelto y Comentarios para obtener más información sobre las llamadas a DxgkCbMiracastSendMessageCallback.
[in, optional] pCallbackContext
Puntero opcional proporcionado por el controlador al contexto de devolución de llamada proporcionado por el controlador. El sistema operativo pasa este contexto a la rutina de devolución de llamada proporcionada por el controlador una vez completada la operación.
Valor devuelto
Devuelve STATUS_PENDING si entrega correctamente el mensaje. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.
Si el controlador de minipuerto de pantalla debe conocer el estado del control de mensajes en modo de usuario, debe proporcionar el DxgkCbMiracastSendMessageCallback función en el parámetro pCallback y comprobar el estado devuelto en el parámetro pIoStatusBlock de esa función.
Observaciones
Si el controlador de miniporte de pantalla proporciona el pInputBuffer y búferes de pOutputBuffer, es responsabilidad del controlador contener estos dos búferes hasta que se llama a la función DxgkCbMiracastSendMessageCallback. De lo contrario, se puede crear un problema aleatorio de daños en la memoria.
Si el controlador proporciona el DxgkCbMiracastSendMessageCallback en el parámetro pCallback, es posible que DxgkCbMiracastSendMessageCallback devuelva antes de que DxgkCbMiracastSendMessage devuelva.
secuencia de llamadas de ejemplo de
Este es el código de ejemplo que muestra cómo usar esta función: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 admitido | Windows 8.1 |
servidor mínimo admitido | Windows Server 2012 R2 |
de la plataforma de destino de | Escritorio |
encabezado de | dispmprt.h (incluya Dispmprt.h) |
irQL | PASSIVE_LEVEL |
Consulte también
DXGK_MIRACAST_DISPLAY_CALLBACKS