| Предыдущий | Следующий |
| RPC_S_INVALID_STRING_BINDING | RPC_S_INVALID_BINDING |
RPC_S_WRONG_KIND_OF_BINDING
Дескрипторы привязки выполняют разные роли
RPC_S_WRONG_KIND_OF_BINDING конкретнее, чем недопустимый дескриптор. Среда RPC распознала дескриптор, но операция не принимает этот вид привязки. Microsoft RPC различает серверную привязку, которую клиент использует для вызова сервера, и клиентскую привязку, передаваемую средой в процедуру диспетчера сервера для описания вызывающей стороны.
Это важно, когда код хранит каждый RPC_BINDING_HANDLE в одной нетипизированной оболочке. Тип C одинаков, но роль во время выполнения различается. Функции, изменяющие или проверяющие серверную привязку, могут отклонять клиентскую привязку конкретного вызова, а функции управления могут предъявлять собственные требования к дескриптору.
Что проверить
- Проследите, где был получен дескриптор: при преобразовании строковой привязки, разрешении конечной точки, из параметра диспетчера сервера или через
RpcBindingServerFromClient. - Не путайте это состояние с
RPC_S_INVALID_BINDING; повторное создание допустимого дескриптора той же неправильной роли не поможет. - Если дескрипторы используются несколькими потоками, сериализуйте операции сброса, освобождения и изменения состояния аутентификации или UUID объекта.
Для диагностики полезно зарегистрировать API, создавший дескриптор, и API, который его отклонил. Обычно несоответствие находится в локальной логике жизненного цикла или владения, а не в доступности удалённой стороны.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.