Поделиться через


функция обратного вызова DXGKDDI_DPSBMTRANSMISSION (dispmprt.h)

Обратный вызов DXGKDDI_DPSBMTRANSMISSION используется для взаимодействия с устройствами филиалов DisplayPort (DP) и устройствами приемника за устройствами филиала через канал боковой полосы.

Синтаксис

DXGKDDI_DPSBMTRANSMISSION DxgkddiDpsbmtransmission;

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

Параметры

Context

Указатель контекста, предоставленный при запросе интерфейса.

pArgs

Указатель на структуру DXGKARG_DPSBMTRANSMISSION.

Возвращаемое значение

DXGKDDI_DPSBMTRANSMISSION возвращает STATUS_SUCCESS, если он успешно выполнен; в противном случае возвращается код ошибки, например один из следующих:

Код ошибки Значение
STATUS_DRIVER_INTERNAL_ERROR Произошла внутренняя ошибка программного обеспечения.
STATUS_ACCESS_DENIED Запрос не поддерживается. Для Windows 10 версии 2004 поддерживаются только запросы на боковое сообщение, перечисленные в разделе примечания ниже.
STATUS_BUFFER_TOO_SMALL Буфер слишком мал для ответа на боковое сообщение или другие операции.
STATUS_DEVICE_HARDWARE_ERROR Произошла ошибка оборудования.
STATUS_DEVICE_POWERED_OFF Устройство отключено.
STATUS_DEVICE_NOT_CONNECTED Устройство не подключено.
STATUS_DEVICE_PROTOCOL_ERROR Произошла ошибка на уровне протокола AUX DP, I2C по протоколу AUX. Драйвер может использовать DPNativeError для кодирования дополнительных сведений об ошибке.

Замечания

Для Windows 10 версии 2004 драйвер требуется только для поддержки следующих запросов бокового сообщения (SBM):

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

Среда выполнения ядра отображения блокирует другие запросы SBM.

Для транзакции SBM запрос записывается в и ответ считывается из фиксированных диапазонов DPCD на спецификацию DP (DOWN_REQ и UP_REP), поэтому поле адреса отсутствует.

DXGKDDI_DPSBMTRANSMISSION является "атомарным", поэтому драйвер должен ждать и получать ответ запроса SBM перед возвратом. Запрос SBM в pArgs->Data полностью пакетизирован вызывающим оператором, поэтому драйвер может напрямую записывать RequestLengthданных в размере пакета SBM последовательно в диапазон DPCD для DOWN_REQ. Драйвер должен получать пакеты ответа SBM непосредственно в данные без обработки и интерпретации.

Драйвер должен использовать End_Of_Message бит в SideBand_MSG_Header, чтобы решить, был ли получен полный ответ, но следует избежать дальнейшей обработки. Data может содержать ответ до MaxReplyLength в байтах, поэтому драйверу необходимо отменить переполненный пакет. Драйвер должен вернуть фактическую длину ответа в ActualReplyLength.

Драйверу не нужно специально проверять ответ NAK, который декодируется вызывающим абонентом так же, как другой ответ ACK. Для ответа NAK драйвер должен вернуть STATUS_SUCCESS.

MaxReplyLength составляет не менее 48 байт, что является максимальным размером пакета сообщения боковой полосы. Это позволяет копировать необработанное сообщение непосредственно для одного ответа пакета. Для ответа с несколькими пакетами вычисляется MaxReplyLength на основе размера пакета размером 16 байт и самого длинного относительного адреса в заголовке SBM, чтобы снизить вероятность нехватки буфера.

Флаг CanUseCachedData указывает, что драйвер может возвращать кэшированные данные ответа, но он должен находиться в формате пакета SBM.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 2004
заголовка dispmprt.h

См. также

DXGKARG_DPSBMTRANSMISSION