DXGKDDI_DPSBMTRANSMISSION función de devolución de llamada (dispmprt.h)
La devolución de llamada DXGKDDI_DPSBMTRANSMISSION se usa para comunicarse con dispositivos de rama DisplayPort (DP) y dispositivos receptores detrás de dispositivos de rama a través del canal de banda lateral.
Sintaxis
DXGKDDI_DPSBMTRANSMISSION DxgkddiDpsbmtransmission;
NTSTATUS DxgkddiDpsbmtransmission(
HANDLE Context,
PDXGKARG_DPSBMTRANSMISSION pArgs
)
{...}
Parámetros
Context
Puntero de contexto proporcionado al consultar la interfaz.
pArgs
Puntero a una estructura DXGKARG_DPSBMTRANSMISSION.
Valor devuelto
DXGKDDI_DPSBMTRANSMISSION devuelve STATUS_SUCCESS si se realiza correctamente; de lo contrario, devuelve un código de error como uno de los siguientes:
Código de error | Significado |
---|---|
STATUS_DRIVER_INTERNAL_ERROR | Error interno del software. |
STATUS_ACCESS_DENIED | No se admite la solicitud. Para Windows 10 versión 2004, solo se admiten las solicitudes de mensajes sideband que aparecen en la sección comentarios de comentarios siguiente. |
STATUS_BUFFER_TOO_SMALL | El búfer es demasiado pequeño para la respuesta de mensajes sideband u otras operaciones. |
STATUS_DEVICE_HARDWARE_ERROR | Error de hardware. |
STATUS_DEVICE_POWERED_OFF | El dispositivo está apagado. |
STATUS_DEVICE_NOT_CONNECTED | El dispositivo no está conectado. |
STATUS_DEVICE_PROTOCOL_ERROR | Se produjo un error en el nivel de protocolo AUX de DP, I2C a través del protocolo AUX. El controlador puede usar DPNativeError para codificar más detalles sobre el error. |
Observaciones
Para Windows 10 versión 2004, solo se requiere un controlador para admitir el siguiente tipo de consulta de solicitudes de mensaje sideband (SBM):
- GET_MESSAGE_TRANSACTION_VERSION
- LINK_ADDRESS
- QUERY_PAYLOAD
- REMOTE_DPCD_READ
- REMOTE_I2C_READ
- QUERY_STREAM_ENCRYPTION_STATUS
El entorno de ejecución del kernel para mostrar bloquea otras solicitudes sbM.
Para una transacción de SBM, se escribe una solicitud en y la respuesta se lee desde intervalos DPCD fijos según la especificación de DP (DOWN_REQ y UP_REP), por lo que no hay ningún campo de dirección.
DXGKDDI_DPSBMTRANSMISSION es "atomic", por lo que el controlador debe esperar y recibir la respuesta de la solicitud SBM antes de devolver. La solicitud SBM en pArgs->Data está totalmente empaquetada por el autor de la llamada, por lo que el controlador puede escribir directamente el RequestLength de Data en tamaño de paquete SBM secuencialmente en el intervalo DPCD para DOWN_REQ. El controlador debe recibir los paquetes de respuesta de SBM directamente en Data sin procesar ni interpretar.
El controlador debe usar el bit de End_Of_Message en el SideBand_MSG_Header para decidir si se ha recibido una respuesta completa, pero debe evitar un procesamiento adicional. Data puede contener una respuesta hasta MaxReplyLength en bytes, por lo que el controlador debe descartar el paquete de desbordamiento. El controlador debe devolver la longitud real de la respuesta en ActualReplyLength.
El controlador no necesita comprobar específicamente una respuesta NAK, que el autor de la llamada descodifica como otra respuesta de ACK. Para una respuesta NAK, el controlador debe devolver STATUS_SUCCESS.
El maxReplyLength es de al menos 48 bytes, que es el tamaño máximo del paquete de mensajes de banda lateral. Esto permite copiar el mensaje sin procesar directamente para una única respuesta de paquete. Para una respuesta con varios paquetes, maxReplyLength se calcula en función de un tamaño de paquete de 16 bytes y dirección relativa más larga en el encabezado SBM para reducir la posibilidad de que no haya suficiente búfer.
La marca CanUseCachedData indica que el controlador puede devolver datos de respuesta almacenados en caché, pero debe estar en formato de paquete SBM.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10, versión 2004 |
encabezado de | dispmprt.h |