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

O retorno de chamada DXGKDDI_DPSBMTRANSMISSION é 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 .

Retornar valor

DXGKDDI_DPSBMTRANSMISSION retornará STATUS_SUCCESS se for bem-sucedido; caso contrário, retornará um código de erro, como um dos seguintes:

Código do Erro Significado
STATUS_DRIVER_INTERNAL_ERROR Ocorreu um erro interno de software.
STATUS_ACCESS_DENIED A solicitação não terá suporte. 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.

Comentários

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 de SBM.

Para uma Transação SBM, uma solicitação é gravada e a resposta é lida de intervalos DPCD fixos de acordo com a especificação de 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 em pArgs-Data> é totalmente empacotada pelo chamador, de modo que o driver pode gravar diretamente o RequestLength de Dados no tamanho do pacote SBM sequencialmente no intervalo DPCD para DOWN_REQ. O driver deve receber os pacotes de resposta do SBM diretamente em Dados sem processamento/interpretação.

O driver deve usar o bit End_Of_Message na SideBand_MSG_Header para decidir se uma resposta completa foi recebida, mas deve evitar processamento adicional. Os dados podem conter uma resposta até MaxReplyLength em bytes, portanto, o driver precisa descartar o pacote de estouro. 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 tem pelo menos 48 bytes, que é o tamanho máximo do pacote de Mensagem de Sideband. 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 reduzir 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
Cliente mínimo com suporte Windows 10, versão 2004
Cabeçalho dispmprt.h

Confira também

DXGKARG_DPSBMTRANSMISSION