| Предыдущий | Следующий |
| SEC_E_INSUFFICIENT_MEMORY | SEC_E_UNSUPPORTED_FUNCTION |
SEC_E_INVALID_HANDLE
Что означает SEC_E_INVALID_HANDLE
SEC_E_INVALID_HANDLE означает, что SSPI получила недействительный credential handle или security context handle. Частая причина — use-after-free, смешение двух типов SecHandle или повторное использование context после завершённого handshake.
Что проверить
- Логируйте SSPI-функцию и происхождение handle:
AcquireCredentialsHandleсоздаёт credential, аInitializeSecurityContext/AcceptSecurityContextработают с context. - Сопоставьте создание с
FreeCredentialsHandleиDeleteSecurityContext. - Не передавайте raw handle между несвязанными connection objects без явного владения.
Как исправить
Создайте новый credential/context штатным SSPI-путём и исправьте lifetime. Смена SPN или пароля не чинит уже недействительный дескриптор.
Как подтвердить исправление
Каждый handle освобождается ровно один раз после последнего использующего его SSPI-вызова и не переживает соответствующий connection context.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
