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