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 sideband.
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 de 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 de software. |
STATUS_ACCESS_DENIED | No se admite la solicitud. Para Windows 10 versión 2004, solo se admiten las solicitudes de mensajes sideband enumeradas en la sección Comentarios a continuación. |
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 sobre AUX. El controlador puede usar DPNativeError para codificar más detalles sobre el error. |
Comentarios
Para Windows 10 versión 2004, solo se requiere un controlador para admitir el siguiente tipo de consulta de solicitudes de mensajes 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 de visualización bloquea otras solicitudes sbM.
En el caso de una transacción 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 volver. El autor de la llamada empaqueta completamente la solicitud SBM en pArgs-Data>, por lo que el controlador puede escribir directamente requestLength of 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 Datos sin procesar o 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. Los datos pueden contener una respuesta hasta MaxReplyLength en bytes, por lo que el controlador debe descartar el paquete desbordado. 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 de NAK, el controlador debe devolver STATUS_SUCCESS.
MaxReplyLength es de al menos 48 bytes, que es el tamaño máximo del paquete sideband Message. Esto permite que el mensaje sin procesar se copie 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 búfer insuficiente.
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 | Value |
---|---|
Cliente mínimo compatible | Windows 10, versión 2004 |
Encabezado | dispmprt.h |