Явные дескрипторы привязки
Для максимального контроля над процессом привязки клиентские и серверные приложения могут использовать явные дескрипторы привязки. Как и неявные дескрипторы привязки, явные дескрипторы привязки позволяют клиентскому приложению выбрать сервер для выполнения его вызовов. Кроме того, явные дескрипторы привязки позволяют приложению клиента или сервера создать сеанс связи RPC с проверкой подлинности. С помощью явных дескрипторов клиент может подключаться к нескольким серверам и выполнять удаленные процедуры на нескольких серверах. Многопоточные и асинхронные клиентские приложения могут даже подключаться к нескольким серверам и выполнять несколько удаленных процедур одновременно.
Клиентское приложение должно передавать явный дескриптор в качестве параметра при каждом удаленном вызове процедуры. Чтобы соответствовать стандарту OSF, дескриптор должен быть указан в качестве первого параметра для каждой удаленной процедуры. Однако расширения Майкрософт для RPC позволяют указать дескриптор привязки в других позициях. Дополнительные сведения см. в статье Расширения microsoft RPC Binding-Handle.
Чтобы создать явный дескриптор, объявите дескриптор в качестве параметра для удаленных операций в IDL-файле. Пример Hello, World можно переопределять, чтобы использовать явный дескриптор, как показано ниже:
/* IDL file for explicit handles */
[
uuid(20B309B1-015C-101A-B308-02608C4C9B53),
version(1.0)
]
interface hello
{
void HelloProc([in] handle_t h1,
[in, string] char * pszString);
}
Явные и неявные дескрипторы можно объединять в одном интерфейсе. Если функция имеет явный дескриптор в списке параметров, будет использоваться этот дескриптор. Если функция в интерфейсе, использующий неявные дескрипторы, не указывает явный дескриптор, будет использоваться неявный дескриптор по умолчанию.