DXGKDDI_MIRACAST_HANDLE_IO_CONTROL función de devolución de llamada (dispmprt.h)
Lo llama el sistema operativo para solicitar que el controlador de miniporte de pantalla procese una solicitud de control de E/S sincrónica en respuesta a una llamada de controlador de pantalla en modo de usuario a la función MiracastIoControl .
Sintaxis
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
Identificador de un bloque de contexto asociado a un adaptador de pantalla. La función DxgkDdiAddDevice del controlador de minipuerto de pantalla proporcionó anteriormente este identificador al subsistema del kernel de gráficos de DirectX.
[in] MiracastContext
Contexto del dispositivo Miracast, proporcionado por el sistema operativo. El controlador de minipuerto de pantalla proporcionó este contexto en una llamada a la función DxgkDdiMiracastCreateContext .
[in] InputBufferSize
Proporcionado por el sistema operativo como tamaño, en bytes, del búfer de entrada al que apunta pInputBuffer. Este valor se originó como el parámetro InputBufferSize de la función MiracastIoControl en modo de usuario.
[in] pInputBuffer
Proporcionado por el sistema operativo como puntero al búfer de entrada. Este valor se originó como el parámetro InputBufferSize de la función MiracastIoControl en modo de usuario.
InputBufferSize especifica el tamaño del búfer.
[in] OutputBufferSize
Proporcionado por el sistema operativo como tamaño, en bytes, del búfer de salida al que apunta pOutputBuffer.
Este valor se originó como el parámetro OutputBufferSize de la función MiracastIoControl en modo de usuario.
[out] pOutputBuffer
Proporcionado por el sistema operativo como puntero al búfer de salida. Este valor se originó como el parámetro pOutputBuffer de la función MiracastIoControl en modo de usuario.
OutBufferSize especifica el tamaño del búfer.
[out] BytesReturned
Proporcionado por el sistema operativo como puntero a un búfer que contiene un valor de tipo ULONG que es el número de bytes que el controlador de miniporte de pantalla devolvió en el búfer al que apunta pOutputBuffer.
Valor devuelto
Devuelve STATUS_SUCCESS si se realiza correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.
Comentarios
El sistema operativo garantiza que se produce una llamada a DxgkDdiMiracastIoControl en el mismo espacio de proceso que se llama a la solicitud MiracastIoControl en modo de usuario.
Aunque el sistema operativo simplemente copia los valores de los tamaños del búfer de entrada y salida de los parámetros respectivos de MiracastIoControl, el controlador de minipuerto de pantalla es responsable de comprobar los tamaños del búfer antes de usar los búferes. Además, el controlador debe realizar operaciones de sondeo dentro de un bloque try/exceptuando la llamada, mediante las funciones ProbeForRead o ProbeForWrite , para comprobar cualquier memoria en modo de usuario a la que apunten los búferes de entrada.
Esta operación de control de E/S se procesa sincrónicamente con una llamada a la función MiracastIoControl en modo de usuario.
Sincronización
El sistema operativo agrupa las funciones DxgkDdiMiracastCreateContext, DxgkDdiMiracastDestroyContext y DxgkDdiMiracastIoControl como una clase Miracast .El nivel de subproceso y sincronización de esta función se establece mediante la forma en que el controlador en modo de usuario establece el parámetro HardwareAccess en una llamada a la función MiracastIoControl :
- Si HardwareAccess es FALSE, el sistema operativo garantiza que DxgkDdiMiracastIoControl sigue el modo de sincronización de segundo nivel tal como se define en Subprocesos y Segundo nivel de sincronización. Se puede llamar a DxgkDdiMiracastIoControl cuando se llama a otras clases de nivel 0, 1 o no miracast de funciones de nivel 2 en otro contexto de subproceso. Sin embargo, solo se puede llamar a una de las funciones de clase Miracast de nivel 2 a la vez.
- Si HardwareAccess es TRUE, DxgkDdiMiracastIoControl sigue el modo de sincronización de tercer nivel tal y como se define en Subprocesos y tercer nivel de sincronización. Tenga en cuenta que el vaciado de la GPU creará una sobrecarga de procesamiento considerable.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8.1 |
Servidor mínimo compatible | Windows Server 2012 R2 |
Plataforma de destino | Escritorio |
Encabezado | dispmprt.h (incluir Dispmprt.h) |
IRQL | PASSIVE_LEVEL |