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 |