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 |