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

Consulte también

DXGKARG_DPSBMTRANSMISSION