Плагины NetView :: Работа с NetView из внешних программ


Любые программы могут получать данные из NetView или даже вносить изменения в хостлист или управлять работой NetView посредством функций экспортируемых nvapi.dll. Ниже можно найти список функций и их параметры. Функции которые изменяют данные хостлиста могут не работать(отмечены + слева) или иметь ограниченную функциональность (+)  если текущий процесс работает в непривилегированном режиме. Эта фича включается в общих настройках NetView на закладке Service. Остальные функции доступны всегда когда запущен NV (+). И еще - функции доступа к линиям, областям и картам возможно в будущем будут переделаны чтобы работа с этими объектами была примерно такой же как работа с хостами. Хотя скорее всего эти функции  останутся для обратной совместимости но появятся новые, более универсальные.

DWORD __stdcall NVGetNetViewStatus(void *Reserved);

DWORD __stdcall NVAction(void *Reserved, DWORD wp, DWORD lp);

DWORD __stdcall NVSetEventHandlerProc(void *HandlerProc);

DWORD __stdcall NVGetHostByTextA(void *Reserved, char* Txt,DWORD Flags);

DWORD __stdcall NVGetHostA(void *Reserved, NVHOST* Hst,DWORD Flags);

DWORD __stdcall NVSetHostA(void *Reserved, NVHOST* Hst,DWORD Flags);

DWORD __stdcall NVDelHostA(void *Reserved, NVHOST* Hst);

DWORD __stdcall NVGetMetaVarA(void *Reserved, DWORD HostID, char *VarName, char *DataBuff, DWORD *BuffSize);

DWORD __stdcall NVSetMetaVarA(void *Reserved, DWORD HostID, char *VarName, char *DataBuff, DWORD BuffSize);

DWORD __stdcall NVGetListByTextA(void *Reserved, char *Txt,DWORD Flags);

DWORD __stdcall NVGetListA(void *Reserved, NVLIST* Lst);

DWORD __stdcall NVSetListA(void *Reserved, NVLIST* Lst);

DWORD __stdcall NVDelListA(void *Reserved, NVLIST* Lst);

DWORD __stdcall NVGetLineA(void *Reserved, NVLINE *Ln);
DWORD __stdcall NVSetLineA(void *Reserved, NVLINE *Ln);
DWORD __stdcall NVDelLineA(NVLINE *Ln);
DWORD __stdcall NVGetAreaA(void *Reserved, NVAREA *Ar);
DWORD __stdcall NVSetAreaA(void *Reserved, NVAREA *Ar);
DWORD __stdcall NVDelAreaA(void *Reserved, NVAREA *Ar);
 

 

 

+DWORD __stdcall NVGetNetViewStatus(void *Reserved);

Возвращает значение типа DWORD старшая половина HIGHWORD(ret) которого - версия работающего NetView (старший\младший байт - старшая\ младшая часть версии), младшая LOWORD(ret):

  • 0 - если NetView не запущен или процесс не может получить к нему доступ
  • 1 - если процесс может получить только читать данные из NetView но не изменять
  • 2 - если процесс имеет полный доступ к NetView
  • Reserved - зарезервировано на будущее, должно быть установлено в NULL

Наверх

 

+DWORD __stdcall NVAction(void *Reserved, DWORD wp, DWORD lp);

 Многофункциональная процедура. Коды действий в wparam:
  • NVACTION_RECHECK - перепроверить хост или хосты из списка. Если (wp and NVACTION_LIST)<>0 то перепроверять список. В lp -идентификатор списка или 0.(wp and NVACTION_LIST) - то перепроверять хост. Функция возвращается сразу, не ожидая окончания проверки.
  • NVACTION_RETRACE -перетрассирует хост или список аналогично  NVACTION_RECHECK
  • NVACTION_OPEN - открывает хост с идентификатором в lp
  • NVACTION_EDIT - открывает окно редактирования хоста с идентификатором в lp. Возвращает 0 если редактирование отменено.
  • NVACTION_IMGEXPORT - инициирует экспорт визуальной карты с идентификатором списка в lp
  • NVACTION_SETSTATE - выполняет обновление состояния хоста в списке согласно всем метапеременным. Быстрее чем метод SETHOST класса TNVHOST т.к. не инициирует процедуру перепроверки и не перезаписывает внутренние структуры. В lp надо засунуть идентификатор хоста.
  • Reserved - зарезервировано на будущее, должно быть установлено в NULL

Наверх

 

 

+DWORD __stdcall NVSetEventHandlerProc(void *HandlerProc);

Устанавивает функцию-обработчик уведомлений о событиях NetView. Каждый процесс может иметь только один такой обработчик. Если HandlerProc=NULL то обработчик выключается. Обработчик должен быть объявлен следующим образом:

  • LRESULT CALLBACK HandlerProc(DWORD msg, DWORD wp, DWORD lp, DWORD tm); и должен возвращать 1.
    • msg = NMNP_ALERT
      • NVALERT_NETWATCHER - событие в NetWatcher'е. Если (wp && NVALERTMASK_CANCEL)==0 значит ктото подключился, иначе - отключился. в lp присутствует идентификатор подключившегося хоста или 0. Так же можно проверить наличие следующих флагов: если (wp && NVALERTMASK_NWBLACK)!=0 значит юзер из черного списка, если (wp && NVALERTMASK_NWWHITE)!=0 значит юзер из белого списка
      • NVALERT_ALARMHOST - для хоста, идентификатор которого находится в lparam произошло оповещение. Если (wp && NVALERTMASK_HOSTUP)!=0 значит хост включился, если (wp && NVALERTMASK_HOSTDOWN)!=0 - выключился, Если (wp && NVALERTMASK_CANCEL)!=0 - юзер кликнул мышкой по хосту для которого перед этим произошло оповещение 
      • NVALERT_TERMINAL -произошло подключение\отключение в Terminal. lparam -идентификатор подключившегося хоста или 0.Если (wp && NVALERTMASK_CANCEL)!=0 значит хост подключился, иначе - отключился. 
      • NVALERT_REDIRECTOR -произошло подключение\отключение в Traffic Redirector. lparam -идентификатор подключившегося хоста или 0.Если (wp && NVALERTMASK_CANCEL)==0 значит хост подключился, иначе - отключился. 
      • NVALERT_IPLOGGER -IP logger чтото засек. Проверяем с помощью && наличие следующих флагов:
        • NVALERTMASK_ILLIST - ктото подключился в прослушиваемому порту
        • NVALERTMASK_ILICMP - наc флудят по ICMP
        • NVALERTMASK_ILSYN - наc флудят TCP SYN пакетами
        • NVALERTMASK_ILUDP - наc флудят UDP пакетами (ненадежно)
    • msg = NMNP_ACTION
      • NVACTION_LIST. lp может содержать идентификатор списка или 0. wp может комбинироватся c:
        • NVACTION_GETFROMNET - произошел опрос сети на наличие новых компов
        • NVACTION_GETFROMFILE - произошла загрузка хостлиста из файла
        • NVACTION_RECHECK - произошла перепроверка списка
        • NVACTION_RETRACE - произошла перетрассировка хостов списка
      • NVACTION_ACTIVATE -приложение нетвью стало активным или наоборот ушло в фон.  lp равно wParam сообщения WM_ACTIVATE которое получило окно NetView
      • NVACTION_MENUPOPUP -сообщение о том что нарисовалась меню, lp:
        • NVMENUFLAG_MAIN - появилось меню Plug-ins
        • NVMENUFLAG_CONTEXT -всплыло контекстное меню хостлиста
        • NVMENUFLAG_TRAY -всплыло контекстное меню иконки в области трея
      • NVACTION_IMGEXPORT - произошел экспорт визуальной карты с идентификатором lp.
    • tm - время когда произошло событие
  • Reserved - зарезервировано на будущее, должно быть установлено в NULL

Наверх

 

+DWORD __stdcall NVGetHostByTextA(void *Reserved, char* Txt,DWORD Flags);

Возвращает идентификатор хоста по его имени или IP адресу. Может так же создать новый хост если в хостлист нету подходящего

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • Txt - имя или IP адрес
  • Flags - могут содержать
    • +NVOBJ_FORCENEW - для создания нового хоста
    • +NVOBJ_HOSTNOIP - по умолчанию при указании NVOBJ_FORCENEW нетвью будет пытатся определить днс имя\ип нового хоста по заданному тексту. Если указать этот флаг - то текст будет именем нового хоста а ип определятся не будет - будет создан хост без IP адреса.

Наверх

 

+DWORD __stdcall NVGetHostA(void *Reserved, NVHOST* Hst,DWORD Flags);

Получает сведения о хосте по его идентификатору либо получает сведения о самом первом хосте в списке, что позволяет перечислять все хосты хостлиста.

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • Hst указывает на структуру NVHOST в которой проинициализировано поле Id в идентификатор нужного хоста или в 0 если нужно найти самый первый хост списка. Функция инициализирует остальные поля структуры, в том числе nextid что позволяет перечислять все хосты списка.
  • Flags может быть 0 или NVOBJ_SELECTED. Если указан NVOBJ_SELECTED то перечисляются только визуально выделенные в хостлисте хосты.

Наверх

 

+DWORD __stdcall NVSetHostA(void *Reserved, NVHOST* Hst,DWORD Flags);

Позволяет добавить новый хост в хостлист или изменить сведения об указанном хосте. Возвращает идентификатор хоста.

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • Hst указывает на структуру NVHOST в которой проинициализировано поле Id в идентификатор нужного хоста или в 0 если нужно добавить новый хост. Так же необходимо проинициализировать остальные поля за исключением nextid. NetView в процессе добавляеня хоста сопоставит имя и адрес нового хоста с уже существующими и может вернуть идентификатор уже существующего хоста даже если перед вызовом Id=0 
  • Flags - зарезервировано. Установите в 0.

Наверх

 

+DWORD __stdcall NVDelHostA(void *Reserved, NVHOST* Hst);

Удаляет хост из хостлиста.

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • Hst указывает на структуру NVHOST в которой проинициализировано поле Id в идентификатор нужного хоста

Наверх

 

+DWORD __stdcall NVGetMetaVarA(void *Reserved, DWORD HostID, char *VarName, char *DataBuff, DWORD *BuffSize);

Получает нужную метапеременную хоста по его имени или идентификатору. Если хост не найден возвращает 0, если в MetaVar недостаточен размер буфера возвращает 2, если все прошло хорошо возвращает 1.

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • HostID - идентификатор существующего хоста, значение одной из переменных которого надо получить
  • VarName - имя метапеременной значение которой нужно получить. Максимум 127 символов длиной. Чувствителен к регистру. Завершается нулевым символом как и обычная NULL TERMINATED строка.
  • DataBuff - указывает на массив куда будут записаны данные метапеременной. Данные не будут NULL TERMINATED - нулевой символ не рассматривается как конец данных. Если в метапеременной строка то вы должны обнулить буфер перед вызовом функции или записать  в конец данных 0 после ее возврата чтобы строка гарантированна была NULL TERMINATED.
  • BuffSize - указывает на переменную DWORD которая перед вызовом должна быть равна размеру памяти, отведенной под буфер, по возвращении эта переменная равна количеству байт данных метапеременной. Даже если метапеременная не была полностью записана в буфер (не хватило места и функция вернула значение 2) эта переменная указывает необходимое количество байт которое нужно для полного возврата переменной

Наверх

 

+DWORD __stdcall NVSetMetaVarA(void *Reserved, DWORD HostID, char *VarName, char *DataBuff, DWORD BuffSize);

Изменяет заданную метапеременную хоста по его имени или идентификатору. Если хост не найден или нет прав возвращает 0, если все OK то возвращается 1.

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • HostID - идентификатор существующего хоста, значение одной из переменных которого надо получить
  • VarName - имя метапеременной значение которой нужно изменить. Максимум 127 символов длиной. Чувствителен к регистру. Завершается нулевым символом как и обычная NULL TERMINATED строка.
  • DataBuff - указывает на массив с  данными метапеременной. Данные не будут NULL TERMINATED - нулевой символ не рассматривается как конец данных. 
  • BuffSize - размер данных в байтах.

Наверх

 

+DWORD __stdcall NVGetListByTextA(void *Reserved, char *Txt,DWORD Flags);

Возвращает идентификатор существующего подсписка, может также создать новый подсписок. Возвращает идентификатор подсписка в случае успеха или 0 в случае облома.

  • Reserved - зарезервировано на будущее, должно быть установлено в NULL
  • Txt - название списка
  • Flags может быть 0 или +NVOBJ_FORCENEW если нужно создать новый список если таковой еще не существует.

Наверх

 

+DWORD __stdcall NVGetListA(void *Reserved, NVLIST* Lst);

Получает данные о списке по его идентификатору который указан в стркутуре Lst. Аналогично NVGetHostA позволяет перечислять все списки. Возвращает идентификатор списка в случае успеха или 0 в случае облома.

Наверх

 

+DWORD __stdcall NVSetListA(void *Reserved, NVLIST* Lst);

Изменяет данные о подсписке. Возвращает идентификатор списка в случае успеха или 0 в случае облома. 

Наверх

 

+DWORD __stdcall NVDelListA(void *Reserved, NVLIST* Lst);

Удаляет подсписок по его идентификатору у Lst. Возвращает 1 в случае успеха или 0 в случае облома.

Наверх

 

+DWORD __stdcall NVGetLineA(void *Reserved, NVLINE *Ln);

Получает сведения о линии по ее индексу указанному в Ln. Если индекс указать -1 то в структуру Ln ничего не будет возвращено. Сама функция всегда возвращает общее количество линий.

Наверх

 

+DWORD __stdcall NVSetLineA(void *Reserved, NVLINE *Ln);

Устанавливает сведения о линии по ее индексу указанному в Ln. Если индекс указать -1 то будет добавлена новая линия. Сама функция возвращает общее количество линий после этой операции или 0 в случае облома (кстати если в списке линий нет то тоже будет возвращен 0).

Наверх

 

+DWORD __stdcall NVDelLineA(void *Reserved, NVLINE *Ln);

Удаляет линию из списка.  Сама функция возвращает общее количество линий после этой операции или 0 в случае облома (кстати если в списке линий нет то тоже будет возвращен 0).

Наверх

 

 

+DWORD __stdcall NVGetAreaA(void *Reserved, NVAREA *Ar);

Получает данные об области по ее идентификатору который указан в стркутуре Ar. Аналогично NVGetHostA позволяет перечислять все области. Возвращает идентификатор области в случае успеха или 0 в случае облома.

Наверх

 


+DWORD __stdcall NVSetAreaA(void *Reserved, NVAREA *Ar);

Устанавливает все данные об указанной области. Учтито что на одном списке не могут существовать 2 области с одинаковым name. Возвращает идентификатор в случае успеха, 0 в случае общей ошибки, -1 в случае наличия области с таким же названием на списке

Наверх


+DWORD __stdcall NVDelAreaA(void *Reserved, NVAREA *Ar);

Удаляет область. Возвращает 1 в случае успеха или 0 в случае ошибки.

Наверх


© 2001-2004 Killer{R}   © 2003 VoVaN