| Предыдущий | Следующий |
| WINBIO_E_SESSION_HANDLE_CLOSED | WINBIO_E_NO_PREBOOT_IDENTITY |
WINBIO_E_DEADLOCK_DETECTED
WINBIO_E_DEADLOCK_DETECTED — результат защиты от ошибок параллелизма. Сеансы WBF могут доставлять асинхронные обратные вызовы, пока приложение одновременно отменяет операции, ожидает их, закрывает сеансы или управляет мониторами событий; вызов блокирующего или изменяющего состояние API из неподходящего обратного вызова или контекста блокировки может создать цикл, в который платформа отказывается входить.
Фиксируйте контекст вызова, а не только имя API
- Запишите идентификатор потока и признак того, что вызов выполняется внутри обратного вызова завершения или события WinBio.
- Запишите мьютексы приложения, удерживаемые во время вызовов WinBio, и наличие другого потока, ожидающего завершения того же сеанса.
- Переносите длительную или блокирующую работу из обратных вызовов событий; обратные вызовы монитора событий доставляются последовательно.
Microsoft предупреждает, что обратные вызовы событий не должны выполнять длительную работу, и документирует WinBioWait как блокирующую операцию ожидания незавершённой работы сеанса. При появлении этого HRESULT постройте временную последовательность блокировок и сеанса. Повтор на том же стеке обратного вызова может воспроизвести тот же цикл зависимостей и менее полезен, чем поиск межпоточного владения.
WinBioRegisterEventMonitor · WinBioWait
Нужно найти другой код? Найти другой код состояния или ошибки.