Что означает код HRESULT 0xC1220300 (WDSTPC_E_CALLBACKS_NOT_REG)?

 
Предыдущий Следующий
EVT_WDSMCS_E_NSREG_FAILURE WDSTPC_E_ALREADY_COMPLETED

WDSTPC_E_CALLBACKS_NOT_REG

WDSTPC_E_CALLBACKS_NOT_REG является ошибкой жизненного цикла WDS Transport Client. Клиентский API требует завершить регистрацию обратных вызовов до WdsTransportClientStartSession; после запуска сеанса регистрировать дополнительные обратные вызовы нельзя.

Сформируйте таблицу обратных вызовов до запуска сеанса

  • Вызовите WdsTransportClientRegisterCallback для каждого обратного вызова, требуемого потребителю, до вызова запуска.
  • Записывайте каждый TRANSPORTCLIENT_CALLBACK_ID и результат регистрации; не считайте ненулевой указатель функции в состоянии приложения доказательством успеха.
  • Отделяйте необязательную обработку метаданных от обязательных обратных вызовов сеанса, данных и завершения.

Microsoft явно документирует порядок и для регистрации, и для запуска. Правильное исправление — не повторять StartSession в цикле, а сначала определить отсутствующую регистрацию обратного вызова или более раннюю ошибку регистрации. Полезная трассировка последовательно записывает инициализацию, создание сеанса, каждый ID обратного вызова и переход запуска, чтобы были видны гонки в многопоточном коде оболочки.

Контракт RegisterCallback · Контракт StartSession · Клиентский API WDS


Нужно найти другой код? Найти другой код состояния или ошибки.