NsEnumServices()

02 августа 2023

ID ns_enum_services

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

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!