KasperskyOS Community Edition 1.1

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, иначе возвращает код ошибки.