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 |