Содержание
KnCmAccept()
Функция объявлена в файле coresrv/cm/cm_api.h
.
Retcode KnCmAccept(const char *client, const char *service, rtl_uint32_t rsid,
Handle listener, Handle *handle);
Функция принимает запрос клиентского процесса на создание канала, полученный ранее с помощью вызова KnCmListen()
. Функция вызывается серверным процессом.
Входные параметры:
client
– имя клиентского процесса, отправляющего запрос на создание канала;service
– полное квалифицированное имя службы, запрошенное клиентским процессом (например,blkdev.ata
);rsid
– идентификатор службы;listener
– слушающий дескриптор; если он имеет значение INVALID_HANDLE, создается новый слушающий дескриптор, который будет использоваться в качестве серверного IPC-дескриптора создаваемого канала.
Выходной параметр handle
содержит серверный IPC-дескриптор создаваемого канала.
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоKnCmConnect()
Функция объявлена в файле coresrv/cm/cm_api.h
.
Retcode KnCmConnect(const char *server, const char *service,
rtl_uint32_t msecs, Handle *handle,
rtl_uint32_t *rsid);
Функция отправляет запрос на создание канала с серверным процессом. Функция вызывается клиентским процессом.
Входные параметры:
server
– имя серверного процесса, предоставляющего службу;service
– полное квалифицированное имя службы (например,blkdev.ata
);msecs
– время ожидания принятия запроса в миллисекундах.
Выходные параметры:
handle
– клиентский IPC-дескриптор;rsid
– идентификатор службы.
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоKnCmDrop()
Функция объявлена в файле coresrv/cm/cm_api.h
.
Retcode KnCmDrop(const char *client, const char *service);
Функция отклоняет запрос клиентского процесса на создание канала, полученный ранее с помощью вызова KnCmListen()
. Функция вызывается серверным процессом.
Параметры:
client
– имя клиентского процесса, отправляющего запрос на создание канала;service
– полное квалифицированное имя службы, запрошенное клиентским процессом (например,blkdev.ata
).
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоKnCmListen()
Функция объявлена в файле coresrv/cm/cm_api.h
.
Retcode KnCmListen(const char *filter, rtl_uint32_t msecs, char *client,
char *service);
Функция проверяет наличие запросов клиентских процессов на создание канала. Функция вызывается серверным процессом.
Входные параметры:
filter
– параметр не используется;msecs
– время ожидания запроса в миллисекундах.
Выходные параметры:
client
– имя клиентского процесса;service
– полное квалифицированное имя службы, запрошенное клиентским процессом (например,blkdev.ata
).
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоNsCreate()
Функция объявлена в файле coresrv/ns/ns_api.h
.
Retcode NsCreate(const char *name, rtl_uint32_t msecs, NsHandle *ns);
Функция осуществляет попытку подключиться к серверу имен name
в течение msecs
миллисекунд. Если параметр name
имеет значение RTL_NULL, функция пытается подключиться к серверу имен ns
(серверу имен по умолчанию).
Выходной параметр ns
содержит дескриптор соединения с сервером имен.
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоNsEnumServices()
Функция объявлена в файле coresrv/ns/ns_api.h
.
Retcode NsEnumServices(NsHandle ns, const char *type, unsigned index,
char *server, rtl_size_t serverSize,
char *service, rtl_size_t serviceSize);
Функция перечисляет службы с заданным интерфейсом, опубликованные на сервере имен.
Входные параметры:
ns
– дескриптор соединения с сервером имен, полученный ранее с помощью вызоваNsCreate()
;type
– имя интерфейса, который реализует служба (например,kl.drivers.Block
);index
– индекс для перечисления служб;serverSize
– максимальный размер буфера для выходного параметраserver
в байтах;serviceSize
– максимальный размер буфера для выходного параметраservice
в байтах.
Выходные параметры:
server
– имя серверного процесса, предоставляющего службу (например,kl.drivers.Ata
);service
– полное квалифицированное имя службы (например,blkdev.ata
).
Например, получить полный список серверных процессов, предоставляющих службу с интерфейсом kl.drivers.Block
, можно следующим образом.
rc = NsEnumServices(ns, "kl.drivers.Block", 0, outServerName, ServerNameSize, outServiceName, ServiceNameSize);
rc = NsEnumServices(ns, "kl.drivers.Block", 1, outServerName, ServerNameSize, outServiceName, ServiceNameSize);
...
rc = NsEnumServices(ns, "kl.drivers.Block", N, outServerName, ServerNameSize, outServiceName, ServiceNameSize);
Вызовы функции с инкрементированием индекса продолжаются до тех пор, пока функция не вернет rcResourceNotFound.
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоNsPublishService()
Функция объявлена в файле coresrv/ns/ns_api.h
.
Retcode NsPublishService(NsHandle ns, const char *type, const char *server,
const char *service);
Функция публикует службу с заданным интерфейсом на сервере имен.
Параметры:
ns
– дескриптор соединения с сервером имен, полученный ранее с помощью вызоваNsCreate()
;type
– имя интерфейса, который реализует публикуемая служба (например,kl.drivers.Block
);server
– имя серверного процесса (например,kl.drivers.Ata
);service
– полное квалифицированное имя службы (например,blkdev.ata
).
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В началоNsUnPublishService()
Функция объявлена в файле coresrv/ns/ns_api.h
.
Retcode NsUnPublishService( NsHandle ns, const char *type, const char *server,
const char *service);
Функция снимает с публикации службу на сервере имен.
Параметры:
ns
– дескриптор соединения с сервером имен, полученный ранее с помощью вызоваNsCreate()
;type
– имя интерфейса, который реализует публикуемая служба (например,kl.drivers.Block
);server
– имя серверного процесса (например,kl.drivers.Ata
);service
– полное квалифицированное имя службы (например,blkdev.ata
).
В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
В начало