Partilhar via


DXGKDDI_DPSBMTRANSMISSION função de retorno de chamada (dispmprt.h)

O DXGKDDI_DPSBMTRANSMISSION retorno de chamada é usado para se comunicar com dispositivos de ramificação do DisplayPort (DP) e dispositivos de coletor por trás de dispositivos de ramificação por meio do canal de sideband.

Sintaxe

DXGKDDI_DPSBMTRANSMISSION DxgkddiDpsbmtransmission;

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

Parâmetros

Context

Ponteiro de contexto fornecido ao consultar a interface.

pArgs

Ponteiro para uma estrutura de DXGKARG_DPSBMTRANSMISSION.

Valor de retorno

DXGKDDI_DPSBMTRANSMISSION retorna STATUS_SUCCESS se tiver êxito; caso contrário, ele retorna um código de erro, como um dos seguintes:

Código de erro Significado
STATUS_DRIVER_INTERNAL_ERROR Ocorreu um erro de software interno.
STATUS_ACCESS_DENIED Não há suporte para a solicitação. Para o Windows 10 versão 2004, há suporte apenas para solicitações de Mensagem de Sideband listadas na seção Comentários abaixo.
STATUS_BUFFER_TOO_SMALL O buffer é muito pequeno para resposta de mensagem de sideband ou outras operações.
STATUS_DEVICE_HARDWARE_ERROR Ocorreu um erro de hardware.
STATUS_DEVICE_POWERED_OFF O dispositivo está desligado.
STATUS_DEVICE_NOT_CONNECTED O dispositivo não está conectado.
STATUS_DEVICE_PROTOCOL_ERROR Ocorreu um erro no DP AUX, I2C no nível do protocolo AUX. O driver pode usar DPNativeError para codificar mais detalhes sobre o erro.

Observações

Para o Windows 10 versão 2004, um driver só é necessário para dar suporte ao seguinte tipo de consulta de solicitações SBM (Sideband Message):

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

O runtime do kernel de exibição bloqueia outras solicitações SBM.

Para uma transação SBM, uma solicitação é gravada e a resposta é lida de intervalos DPCD fixos de acordo com a especificação DP (DOWN_REQ e UP_REP), portanto, não há campo de endereço.

DXGKDDI_DPSBMTRANSMISSION é "atômico", portanto, o driver deve aguardar e receber a resposta da solicitação SBM antes de retornar. A solicitação SBM no pArgs->Data é totalmente empacotada pelo chamador, de modo que o driver pode gravar diretamente o RequestLength de Data no tamanho do pacote SBM sequencialmente no intervalo DPCD para DOWN_REQ. O driver deve receber os pacotes de resposta SBM diretamente no Data sem processamento/interpretação.

O driver deve usar o bit End_Of_Message no SideBand_MSG_Header para decidir se uma resposta completa foi recebida, mas deve evitar processamento adicional. data pode conter uma resposta até MaxReplyLength em bytes, de modo que o driver precisa descartar o pacote excedente. O driver deve retornar o comprimento real da resposta em ActualReplyLength.

O driver não precisa verificar especificamente uma resposta NAK, que é decodificada pelo chamador assim como outra resposta ACK. Para uma resposta NAK, o driver deve retornar STATUS_SUCCESS.

O MaxReplyLength é de pelo menos 48 bytes, que é o tamanho máximo do pacote de Mensagem de Banda Lateral. Isso permite que a mensagem bruta seja copiada diretamente para uma única resposta de pacote. Para uma resposta com vários pacotes, maxreplyLength é calculado com base em um tamanho de pacote de 16 bytes e endereço relativo mais longo no cabeçalho SBM para diminuir a possibilidade de buffer insuficiente.

O sinalizador CanUseCachedData indica que o driver pode retornar dados de resposta armazenados em cache, mas precisa estar no formato de pacote SBM.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10, versão 2004
cabeçalho dispmprt.h

Consulte também

DXGKARG_DPSBMTRANSMISSION