Функция объявлена в файле 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, иначе возвращает код ошибки.
В начало