атрибут ncacn_np
Ключевое слово ncacn_np определяет именованные каналы как семейство протоколов для конечной точки.
endpoint("ncacn_np:server-name[\\pipe\\pipe-name]")
-
имя_сервера
-
Необязательный элемент. Указывает имя сервера. Символы обратной косой черты являются необязательными.
-
имя-канала
-
Указывает допустимое имя канала. Допустимое имя канала — это строка, содержащая идентификаторы, разделенные символами обратной косой черты. Первый идентификатор должен быть конвейером. Каждый идентификатор должен быть разделен двумя символами обратной косой черты.
Сервер создает экземпляр именованного канала, который затем будет доступен для любого клиента. Когда клиент пытается подключиться, существующий экземпляр связывается с этим клиентом. Перед подключением другого клиента сервер должен создать другой экземпляр именованного канала. Если клиент пытается выполнить привязку к серверу перед созданием нового экземпляра, вызов привязки RpcBindingFromStringBinding Может завершиться ошибкой с сообщением об ошибке RPC_S_SERVER_TOO_BUSY. Поэтому необходимо убедиться, что клиентское приложение обрабатывает ситуацию, когда сервер слишком занят, чтобы принять подключение. Клиент должен автоматически повторить попытку, предложить пользователю выполнить действия или корректно завершить сбой.
Синтаксис строки порта именованного канала, как и всех строк портов, определяется реализацией транспорта и не зависит от спецификации IDL. Компилятор MIDL выполняет ограниченную проверку синтаксиса, но не гарантирует правильность спецификации конечной точки. Некоторые классы ошибок могут сообщаться во время выполнения, а не во время компиляции.
[
uuid(12345678-4000-2006-0000-20000000001a),
version(1.1),
endpoint("ncacn_np:[\\pipe\\stove\\hat]")
]
interface iface1
{
// Interface definition statements.
}
[
uuid(87654321-4000-2006-0000-20000000001b),
version(1.1),
endpoint("ncacn_np:\\\\myotherserver[\\pipe\\corncob]")
]
interface iface2
{
// Interface definition statements.
}