Partager via


DXGKDDI_DPSBMTRANSMISSION fonction de rappel (dispmprt.h)

Le rappel DXGKDDI_DPSBMTRANSMISSION est utilisé pour communiquer avec les appareils de branche DisplayPort (DP) et les appareils récepteurs derrière les appareils de branche via le canal de bande latérale.

Syntaxe

DXGKDDI_DPSBMTRANSMISSION DxgkddiDpsbmtransmission;

NTSTATUS DxgkddiDpsbmtransmission(
  HANDLE Context,
  PDXGKARG_DPSBMTRANSMISSION pArgs
)
{...}

Paramètres

Context

Pointeur de contexte fourni lors de l’interrogation de l’interface.

pArgs

Pointeur vers une structure DXGKARG_DPSBMTRANSMISSION .

Valeur retournée

DXGKDDI_DPSBMTRANSMISSION retourne STATUS_SUCCESS si elle réussit ; Sinon, il retourne un code d’erreur tel que l’un des éléments suivants :

Code d'erreur Signification
STATUS_DRIVER_INTERNAL_ERROR Une erreur interne du logiciel s'est produite.
STATUS_ACCESS_DENIED La demande n'est pas prise en charge. Pour Windows 10 version 2004, seules les demandes de message en bande latérale répertoriées dans la section Remarques ci-dessous sont prises en charge.
STATUS_BUFFER_TOO_SMALL La mémoire tampon est trop petite pour la réponse aux messages en bande latérale ou d’autres opérations.
STATUS_DEVICE_HARDWARE_ERROR Une erreur matérielle s’est produite.
STATUS_DEVICE_POWERED_OFF L’appareil est hors tension.
STATUS_DEVICE_NOT_CONNECTED L’appareil n’est pas connecté.
STATUS_DEVICE_PROTOCOL_ERROR Une erreur s’est produite au niveau du protocole DP AUX, I2C sur AUX. Le pilote peut utiliser DPNativeError pour encoder plus de détails sur l’erreur.

Remarques

Pour Windows 10 version 2004, un pilote est nécessaire uniquement pour prendre en charge le type de requête suivant de requêtes SBM (Sideband Message) :

  • GET_MESSAGE_TRANSACTION_VERSION
  • LINK_ADDRESS
  • QUERY_PAYLOAD
  • REMOTE_DPCD_READ
  • REMOTE_I2C_READ
  • QUERY_STREAM_ENCRYPTION_STATUS

Le runtime du noyau d’affichage bloque d’autres requêtes SBM.

Pour une transaction SBM, une requête est écrite et la réponse est lue à partir de plages DPCD fixes en fonction des spécifications dp (DOWN_REQ et UP_REP), il n’y a donc pas de champ d’adresse.

DXGKDDI_DPSBMTRANSMISSION est « atomique », le pilote doit donc attendre et recevoir la réponse de la requête SBM avant de revenir. La requête SBM dans pArgs-Data> étant entièrement paquetée par l’appelant, le pilote peut écrire directement le RequestLength of Data dans la taille du paquet SBM de manière séquentielle dans la plage DPCD pour DOWN_REQ. Le pilote doit recevoir les paquets de réponse SBM directement dans les données sans traitement/interprétation.

Le pilote doit utiliser le bit End_Of_Message dans le SideBand_MSG_Header pour décider si une réponse complète a été reçue, mais doit éviter tout traitement ultérieur. Les données peuvent contenir une réponse jusqu’à MaxReplyLength en octets. Le pilote doit donc ignorer le paquet qui déborde. Le pilote doit retourner la longueur réelle de la réponse dans ActualReplyLength.

Le pilote n’a pas besoin de vérifier spécifiquement une réponse NAK, qui est décodée par l’appelant comme une autre réponse ACK. Pour une réponse NAK, le pilote doit retourner STATUS_SUCCESS.

MaxReplyLength est d’au moins 48 octets, ce qui correspond à la taille maximale du paquet message de bande latérale. Cela permet de copier le message brut directement pour une réponse de paquet unique. Pour une réponse avec plusieurs paquets, MaxReplyLength est calculé en fonction d’une taille de paquet de 16 octets et de l’adresse relative la plus longue dans l’en-tête SBM pour réduire la possibilité d’une mémoire tampon insuffisante.

L’indicateur CanUseCachedData indique que le pilote peut retourner des données de réponse mises en cache, mais qu’elles doivent être au format de paquet SBM.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10, version 2004
En-tête dispmprt.h

Voir aussi

DXGKARG_DPSBMTRANSMISSION