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


функция обратного вызова 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 Ошибка на уровне протокола DP AUX, 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, чтобы решить, был ли получен полный ответ, но следует избегать дальнейшей обработки. Данные могут содержать ответ maxReplyLength в байтах, поэтому драйвер должен отменить переполнение пакета. Драйвер должен возвращать фактическую длину ответа в ActualReplyLength.

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

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

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

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 2004
Верхняя часть dispmprt.h

См. также раздел

DXGKARG_DPSBMTRANSMISSION