DXGKDDI_DPSBMTRANSMISSION funzione di callback (dispmprt.h)

Il callback DXGKDDI_DPSBMTRANSMISSION viene usato per comunicare con i dispositivi di ramo DisplayPort (DP) e i dispositivi sink dietro i dispositivi branch tramite il canale sideband.

Sintassi

DXGKDDI_DPSBMTRANSMISSION DxgkddiDpsbmtransmission;

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

Parametri

Context

Puntatore di contesto fornito durante la query sull'interfaccia.

pArgs

Puntatore a una struttura DXGKARG_DPSBMTRANSMISSION .

Valore restituito

DXGKDDI_DPSBMTRANSMISSION restituisce STATUS_SUCCESS se ha esito positivo; in caso contrario, restituisce un codice di errore, ad esempio uno dei seguenti:

Codice di errore Significato
STATUS_DRIVER_INTERNAL_ERROR Si è verificato un errore interno del software.
STATUS_ACCESS_DENIED La richiesta non è supportata. Per Windows 10 versione 2004, sono supportate solo le richieste di messaggi sideband elencate nella sezione Osservazioni riportate di seguito.
STATUS_BUFFER_TOO_SMALL Il buffer è troppo piccolo per la risposta al messaggio Sideband o ad altre operazioni.
STATUS_DEVICE_HARDWARE_ERROR Si è verificato un errore hardware.
STATUS_DEVICE_POWERED_OFF Il dispositivo è disattivato.
STATUS_DEVICE_NOT_CONNECTED Il dispositivo non è connesso.
STATUS_DEVICE_PROTOCOL_ERROR Si è verificato un errore a livello di protocollo DP AUX, I2C rispetto al livello di protocollo AUX. Il driver può usare DPNativeError per codificare altri dettagli sull'errore.

Commenti

Per Windows 10 versione 2004, è necessario un driver solo per supportare il tipo di query seguente di richieste di messaggio sideband(SBM):

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

Il runtime del kernel di visualizzazione blocca altre richieste SBM.

Per una transazione SBM, una richiesta viene scritta in e la risposta viene letto dagli intervalli DPCD fissi per specifica dp (DOWN_REQ e UP_REP), quindi non esiste alcun campo di indirizzo.

DXGKDDI_DPSBMTRANSMISSION è "atomica", quindi il driver deve attendere e ricevere la risposta della richiesta SBM prima di restituire. La richiesta SBM in pArgs-Data> è completamente pacchettizzata dal chiamante, in modo che il driver possa scrivere direttamente la dimensione del pacchetto RequestLengthin formato pacchetto SBM in sequenza nell'intervallo DPCD per DOWN_REQ. Il driver deve ricevere i pacchetti di risposta SBM direttamente in Dati senza elaborazione/interpretazione.

Il driver deve usare il bit di End_Of_Message nel SideBand_MSG_Header per decidere se è stata ricevuta una risposta completa, ma deve evitare ulteriori elaborazioni. I dati possono contenere una risposta fino a MaxReplyLength in byte, quindi il driver deve eliminare il pacchetto di overflow. Il driver deve restituire la lunghezza effettiva della risposta in ActualReplyLength.

Il driver non deve verificare in modo specifico la presenza di una risposta NAK, decodificata dal chiamante come un'altra risposta ACK. Per una risposta NAK, il driver deve restituire STATUS_SUCCESS.

MaxReplyLength è almeno 48 byte, ovvero la dimensione massima dei pacchetti di messaggi sideband. Ciò consente di copiare direttamente il messaggio non elaborato per una singola risposta al pacchetto. Per una risposta con più pacchetti, MaxReplyLength viene calcolato in base a una dimensione del pacchetto di 16 byte e a un indirizzo relativo più lungo nell'intestazione SBM per ridurre la possibilità di buffer insufficiente.

Il flag CanUseCachedData indica che il driver può restituire dati di risposta memorizzati nella cache, ma deve essere in formato pacchetto SBM.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 2004
Intestazione dispmprt.h

Vedi anche

DXGKARG_DPSBMTRANSMISSION