функция обратного вызова 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 |