home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2007 April / PCpro_2007_04.ISO / files / dsl / NVinst.exe / nvplugn.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-02-10  |  25.4 KB  |  475 lines

  1. //************************************
  2. //*NetView plug-ins header file v2.93*
  3. //*     (c)Killer{R} 02.07.2005 Rev A*
  4. //************************************
  5. #ifndef nvplugh
  6. #define nvplugh
  7. #pragma pack(push,1)
  8.  
  9. //------------------------------------------------
  10. //NMPN_NETSEND
  11. //Use this message to send net send messages via NetView NetMessenger
  12. //wParam = 0
  13. //lParam points to initialized NVNETSEND structure
  14. //NVNETSEND::flags can be a any combination of following flags:
  15. #define NVNETSEND_WAITCOMPLETE 0x01//if specified call will wait until message will be send or failed. Returns error code or 0 on success.
  16.                                    //if not specified call immidiately returns and it is not possible to get result code
  17.  
  18. #define NVNETSEND_WAITPENDING  0x02//if specified call will wait for completion of any pending sends
  19.                                    //if not specified call returns with code -1 if thereis pending send
  20.  
  21. #define NVNETSEND_SHOWUI       0x04//if specified call will set from, to and message fields in NetMessenger window and show it
  22.                                    //without send. If NVNETSEND_SHOWUI specified then NVNETSEND_WAITCOMPLETE flag ignored
  23.  
  24.  
  25. //------------------------------------------------
  26. //NMPN_NVEXTEXEC
  27. //Use this message to exec external programs from plug-ins instead
  28. //of calling CreateProcess/ShellExecute/WinExec whenever possible
  29. //When NetView runs as service any processes that created by plug-in
  30. //directly with CreateProcess/ShellExecute/WinExec will run under SYSTEM account
  31. //calling this functions allow run processes under currently logged-on user
  32. //if thereis no interactively logged-on users NMPN_NVEXTEXEC fails and return 0xffffffff
  33. //Also it is possible to simple check is there logged-on user present and is it privileged 
  34. //user (that is Administrator or any other who has write permissions to NetView.ini file)
  35. ///wParam=0, lParam=0 - to simple get logged-on user status
  36. ///wParam=1, lParam points to NULL-terminated char array - exec program with WinExec under logged user
  37. ///wParam=2, lParam points to NULL-terminated char array - exec program/document with ShellExecute under logged user
  38. ///Return 0 if no logged user present
  39. ///Return 1 - if logged user is present but it is not privileged
  40. ///Return 2 - if logged user is present and it is privileged
  41. ///Return 0xffffffff - if program execution failed due to any other cause
  42.  
  43. //------------------------------------------------
  44. //NMPN_IMAGES
  45. //Use this message to obtain any NetView interface-specified
  46. //images such as indexed menus images loaded from images.bmp
  47. //and shared and ftp resource name assotiated images
  48. //HICON's returned are owned by NetView so plug-in shouldn't
  49. //destroy it after use
  50. #define NVIMAGES_GETRESIMG    0x01//Retrieves HICON associated to given resource name in NetView settings
  51.                                   ///lParam - points to NULL-terminated resourcename string
  52.                                   ///returns HICON as result or NULL if no icon associated
  53.  
  54. #define NVIMAGES_GETRESIMGCH  0x02//Same as NVIMAGES_GETRESIMG but "cached resource" image will be returned
  55.  
  56. #define NVIMAGES_GETNVIMG     0x03//Retrieves HICON of internal NetView image associated to given index
  57.                                   ///Icons are images extracted from images.bmp on startup
  58.                                   ///lParam specifies icon index as zero-based image number in images.bmp
  59.                                   ///returns HICON as result
  60.  
  61. //------------------------------------------------
  62. //NMNP_HOSTMSG
  63. //Sent by NetView to plug-ins and scripts when
  64. //user double clicked on the host with specified
  65. //and enabled "hostmsg://NNN" command on advanced page
  66. //of host's edition dialog. wParam - user specified
  67. //number NNN. lParam - host's id.
  68.  
  69.  
  70. //------------------------------------------------
  71. //NMPN_TRYAUTH
  72. //Used to authorize self on local computer using stored in metavariables user and password or using
  73. //random-generated username
  74. //if wParam = 0:
  75. ///try authorize host with stored username and password in variables
  76. ///"user" and "pass". If no user/pass stored do nothing
  77. //if wParam = 1:
  78. ///try authorize host with stored username and password in variables
  79. ///"user" and "pass". If no user/pass stored try random username
  80. //lParam - host's ID
  81.  
  82. //------------------------------------------------
  83. //NMPN_GETRESLIST
  84. //Used to get NETBIOS or FTP resourcelist of specified hostname
  85. //NETBIOS and FTP settings determined by general NetView's settings
  86. //and host's individual settings
  87. //Flags for wParam:
  88. #define NVRESLIST_FTP     0 //get FTP resources (if enabled by settings)
  89. #define NVRESLIST_NETBIOS 1 //get NETBIOS resources (if enabled by settings)
  90. #define NVRESLIST_USEID   2 //bitmask flag, can be used with one of above, tells
  91.                             ///NetView to use NVRESLIST::host.id
  92.                             ///(if not specified NVRESLIST::host.name used)
  93.  
  94. //lParam points to NVRESLIST structure. If thereis not enough buffer length
  95. //to place result message returns 2 and set buflen field to neccessary length.
  96. //In case of success returns 1. By the way if hosts has no resources or if network
  97. //error occured message returns 1, but resourcelist contains only character '\1'
  98. //If other error occured returns 0
  99.  
  100.  
  101.  
  102. //------------------------------------------------
  103. //NMPN_CALLBACK
  104. //Used to set plugins callback functions to handle event of recheck host with
  105. //disabled default rechecks or to make some work on every host's SETSTATE event
  106. //lParam points to such callback function :
  107. //LRESULT CALLBACK NVCallBackProc(DWORD EventCode, DWORD ObjId, void *Reserved)
  108. //EventCode - event code: NVCB_CUSTOM_RECHECK or NVCB_PRE_SETSTATE (see below)
  109. //ObjId     - host's id 
  110. //function must return 1
  111. //Flags in wParam:
  112. #define NVCB_CUSTOM_RECHECK       0x0001//to enable notifies on recheck of hosts
  113.                                         ///with disabled default recheck mechanism
  114. #define NVCB_PRE_SETSTATE         0x0002//to enable notifies just before hosts setstate
  115. #define NVCB_REMOVECALLBACK       0x1000//use to remove callback function or disable some events
  116.  
  117.  
  118. //------------------------------------------------
  119. //NMPN_NVCTL
  120. //wParam=0;lParam=0 - shows and activates main NetView window
  121. //wParam=1;lParam points to MSG structure. Message in MSG will
  122. // be broadcasted to all currently loaded plugins
  123.  
  124. //------------------------------------------------
  125. //NMPN_PLUGINEX -used to connect external process as plugin
  126. //wParam
  127. //0 to query NetView info by external process
  128. //1 to remove thread from NetView's plugins list
  129. //2 to add thread to NetView's plugins list
  130. //lParam points to NVPLUGININFO structure
  131. //process must allocate this structure
  132. //process must allocate NVPLUGINGOINFO structure and set pointer to it in NVPLUGININFO.goinfo
  133. //process nust allocate and free all structrures in address space of NetView, by using
  134. //VirtualAllocEx/VirtualFreeEx, read and write memory by ReadProcessMemory/WriteProcessMemory
  135. //process must correctly remove itself from plugins list on exiting and when received WM_QUIT
  136. //from NetView to avoid blocking NetView on exit
  137.  
  138. //------------------------------------------------
  139. //NetView sets this flags in NMNP_ALERT as wParam
  140. //lParam depends on alert type
  141. #define NVALERT_NETWATCHER   0x00000001//NetWatcher detected user connection, lParam - host id or NULL
  142. #define NVALERT_ALARMHOST    0x00000002//Alarm host in host list goes up or down, lParam - host id or NULL
  143. #define NVALERT_TERMINAL     0x00000003//Terminal accepted client in server mode, lParam - host id or NULL
  144. #define NVALERT_REDIRECTOR   0x00000004//Redirector accepted client, lParam - host id or NULL
  145. #define NVALERT_IPLOGGER     0x00000005//IP logger detected activity or flood atack,
  146. #define NVALERT_NETSEARCHER  0x00000006//NetSearcher event send on end searching
  147. #define NVALERT_RESSCANER    0x00000007//Resources Searcher event send on end of scan
  148.  
  149. #define NVALERTMASK_CANCEL   0x00040000//bitmask. If set continious event has been finished.(Alarmhost goes down, NetWatcher - user disconnected, Terminal, Redirector - client disconnected, IP logger - no portlistener activity, NVALERT_ALARMHOST - user clicks on alarmed host)
  150.  
  151. #define NVALERTMASK_NWBLACK  0x00010000//NVALERT_NETWATCHER
  152. #define NVALERTMASK_NWWHITE  0x00020000//masks
  153. #define NVALERTMASK_NWSKIP   0x00080000//
  154.  
  155. #define NVALERTMASK_ILLIST   0x00010000///////
  156. #define NVALERTMASK_ILICMP   0x00020000//NVALERT_IPLOGGER
  157. #define NVALERTMASK_ILSYN    0x00080000//masks
  158. #define NVALERTMASK_ILUDP    0x00100000///////
  159.  
  160. #define NVALERTMASK_HOSTUP   0x00010000//NVALERT_ALARMHOST
  161. #define NVALERTMASK_HOSTDOWN 0x00020000//masks
  162.  
  163. //------------------------------------------------
  164. //use with NMPN_OBJECT
  165. //lParam points to NVHOST, NVLIST, NVLINE or NVAREA structures(or even represents objects IDs)
  166. //wParam:
  167.  
  168. #define NVOBJ_SELECTED       0x10000//Use with NVOBJ_GETHOST - to get list of selected hosts
  169.                                     ///or NVOBJ_GETLIST to get currently active hostlist
  170.                                     ///(id will be set to NULL if there is no active hostlist's window)
  171. #define NVOBJ_FORCENEW       0x20000//Use with NVOBJ_HOSTBYTEXT and NVOBJ_LISTBYTEXT
  172. #define NVOBJ_HOSTNOIP       0x40000//Use with NVOBJ_HOSTBYTEXT|NVOBJ_FORCENEW to add host
  173.                                     //with empty IP preventing any resolving
  174.                                     //you can add host with random name and empy IP then
  175.                                     //make it static and set true name and IP
  176. #define NVOBJ_GETHOST        0x00001//set id to NULL to get first host
  177.                                     ///selected hosts will be returned if NVOBJ_SELECTED
  178. #define NVOBJ_SETHOST        0x00002//set id to NULL to add new host
  179.                                     ///Note that if exists host with same name or IP
  180.                                     ///it will be rescanned and returned
  181. #define NVOBJ_DELHOST        0x00004
  182. #define NVOBJ_HOSTBYTEXT     0x00008//lp points to hostname or ip address. Message returns host id
  183.                                     ///if NVOBJ_FORCENEW specified new host will be created
  184.  
  185. //
  186. #define NVOBJ_GETLIST        0x00010//set id to zero to get first list
  187. #define NVOBJ_SETLIST        0x00020//set id to zero to create new list.
  188.                                     ///Note that if exists list with same name it will be returned
  189. #define NVOBJ_DELLIST        0x00040//lParam represents list id
  190. #define NVOBJ_LISTBYTEXT     0x00080//lParam points to mapname, can be used with NVOBJ_FORCENEW
  191.                                     ///Message returns list id
  192.  
  193.  
  194.  
  195. #define NVOBJ_GETLINE        0x00100//Set index field in NVLINE structure.
  196.                                     ///Message result equals total line count.
  197. #define NVOBJ_SETLINE        0x00200//Set index field in NVLINE structure. Set Index to -1 to add new line.
  198.                                     ///Message result equals total line count after. Set Nodes to -1 to allow
  199.                                     ///user to add nodes manually (first line node will be placed on the last
  200.                                     ///right-mouse click position). Note that if Nodes=-1  then line's hostlist
  201.                                     ///will be activated and switched to Visual Map mode, if not in it
  202. #define NVOBJ_DELLINE        0x00400//Set lParam to index of line to be deleted.
  203.                                     ///Message result equals total line count after.
  204.  
  205.  
  206. #define NVOBJ_GETAREA        0x00800//set id to zero to get first area
  207.                                     //return id if success or 0 if error occured
  208. #define NVOBJ_SETAREA        0x01000//set id to zero to create new area if there is no area with the same name on the same map
  209.                                     ///Note that if exists area with same name on specified map it will be returned
  210.                                     //return id if success or 0 or -1 if error occured
  211. #define NVOBJ_DELAREA        0x02000//lParam represents area's id
  212.                                     //return 1 if success or 0 if error occured
  213.  
  214.  
  215. //------------------------------------------------
  216.  
  217.  
  218. //use with NMPN_MENU
  219. //wParam      MENUACTION_SET|MENUACTION_DEL|MENUACTION_SPLIT
  220. //lParam      LPNVMENUINFO  |DWORD id
  221. #define NVMENUACTION_SET   0//set id to zero to create new menu item and it's id will be returned
  222. #define NVMENUACTION_DEL   1//deletes menu item
  223. #define NVMENUACTION_SPLIT 2//split menu submenu items to fit in screen 
  224. #define NVMENUFLAG_MAIN     0x01//Menu item will be appeared in Plug-ins submenu. This flag only used when creating non-submenu item.
  225. #define NVMENUFLAG_CONTEXT  0x02//Menu item will be appeared in context menu. This flag only used when creating non-submenu item.
  226. #define NVMENUFLAG_TRAY     0x04//Menu item will be appeared in tray icon popup menu. This flag only used when creating non-submenu item.
  227. #define NVMENUFLAG_DISABLED 0x08//Menu item will be appeared as disabled
  228. #define NVMENUFLAG_CHECKED  0x10//Menu item will be appeared as checked
  229. #define NVMENUFLAG_SORTED   0x20//Menu item will be added at sorted position
  230. //------------------------------------------------
  231. //use with NMPN_METAVAR
  232. //wParam = {NVMETAVAR_GET,NVMETAVAR_SET}
  233. //lParam LPNVMETAVAR
  234. #define NVMETAVAR_GET 0
  235. //return 1 if success
  236. //return 0 if fail
  237. //return 2 if vallen too small to acomodate all data. Vallen on return equals data length
  238. #define NVMETAVAR_SET 1
  239. //return 1 if success
  240. //return 0 if fail
  241. #define NVMETAVAR_USEID 2
  242. //Bit flags, is set then use "id" instead of "name" field of "host" union in NVMETAVAR structure
  243.  
  244. //------------------------------------------------
  245. //NMPN_ACTION and NMNP_ACTION
  246. //bitmask for wParam
  247.  
  248. //group flags
  249. #define NVACTION_GETFROMNET  0x01//!use only when NVACTION_LIST specified
  250. #define NVACTION_GETFROMFILE 0x02//!use only when NVACTION_LIST specified
  251.                                  ///lParam contains (char *) - path to LMHOSTS
  252.                                  ///to import or NULL - default will be used
  253. #define NVACTION_RECHECK     0x08//if NVACTION_LIST not specified
  254.                                  ///lParam contains ListView host id
  255.                                  ///otherwise list id or NULL to recheck all lists
  256. #define NVACTION_RETRACE     0x1000//if NVACTION_LIST not specified lParam contains list id or hostid
  257.  
  258. #define NVACTION_CLEARLIST   0x2000//lParam contains id of list to be deleted or NULL to clear entire list
  259.  
  260. #define NVACTION_LIST        0x20//if not set means single host action
  261. ///
  262.  
  263. //single flags
  264. #define NVACTION_ACTIVATE    0x8000//Main netview window status changed lParam
  265.                                    ///equals wParam in WM_ACTIVATE message sent
  266.                                    ///to main window by system
  267.  
  268. #define NVACTION_MENUPOPUP   0x10000//NetView sends this message when plug-ins menu, tray menu or context menu popups
  269.                                     //lParam equals NVMENUFLAG_MAIN, NVMENUFLAG_CONTEXT or NVMENUFLAG_TRAY
  270.                                     //plugin can use this notification to dynamically enable/disable its menu items
  271.  
  272. #define NVACTION_OPEN        0x10//lParam contains host item id
  273.  
  274.  
  275. #define NVACTION_OPENPATH    0x80000//lParam points to path to be opened
  276.  
  277. #define NVACTION_SAVELMHOSTS 0x100//use to save entire hostlist to specified file
  278.                                   ///lParam contains pointer to file path\name
  279.                                   ///or NULL - default LMHOSTS will be saved
  280.                                   ///!All other flags should be not set
  281.  
  282. #define NVACTION_SETSTATE   0x400//lParam=0 Resets current state of NetView:
  283.                                  ///lParam=hostid - redraws host on list
  284.  
  285. #define NVACTION_SETTINGS   0x800//lParam=0 - notifies plug-in that global settings has been changed by user
  286.  
  287. #define NVACTION_EDIT       0x20000 //lParam contains host id to edit
  288.  
  289. #define NVACTION_IMGEXPORT   0x40000//lParam contains exported list id
  290.                                     ///this message can be sent by plugin to initiate export
  291.                                     ///returns 1 if initiate export succed
  292.                                     ///NetView sends this message when list has been exported
  293.  
  294. #define NVACTION_LOCKSAVE   0x100000//lParam = 1 - to increment saving hostlist locks counter
  295.                                     ///lParam = 0 - to decrement saving hostlist locks counter
  296.                                     ///lParam = 2 - do nothing, only return current locks counter
  297.                                     ///NetView allow user to save hostlist if current locks counter is zero
  298.                                     ///if autosave hostlist enabled and locks counter on NetView exit
  299.                                     ///is not zero then hostlist will not be saved automatically on exit
  300.                                     ///plug-in can increment locks counter before doing some integrity-critical
  301.                                     ///task and decrement it after task is completed to prevent saving hostlist
  302.                                     ///with incorrect data. For example NetView sets lock before loading hostlist
  303.                                     ///from file and decrements counter after load finished
  304.  
  305. ///
  306.  
  307. //followed bitmasks sets by NetView in wParam with NVACTION_OPEN and NVACTION_RECHECK
  308. //only when NVACTION_LIST not set (single open/recheck host) lParam in this case
  309. //represents hostitem id or NULL if no item associated
  310. #define NVACTION_RESULTONLINE  0x40
  311. #define NVACTION_RESULTOPENED  0x80
  312. //-------------------------------------------------
  313.  
  314.  
  315. //-------------------------------------------------
  316. //-------------------------------------------------
  317. //-----------------------Control codes definitions-
  318. //plugin->netview main window main codes
  319. //Use as 1st parameter in NVPLUGINGOINFO::nvcall (SendMessage available for compatibility))
  320. #define NMPN_MENU          WM_USER+0x401
  321. #define NMPN_METAVAR       WM_USER+0x402
  322. #define NMPN_ACTION        WM_USER+0x403
  323. #define NMPN_GETSHARELIST  WM_USER+0x404
  324. #define NMPN_GETRESLIST    WM_USER+0x405
  325. #define NMPN_TRYAUTH       WM_USER+0x406
  326. #define NMPN_OBJECT        WM_USER+0x407
  327. #define NMPN_IMAGES        WM_USER+0x408
  328. #define NMPN_PLUGINEX      WM_USER+0x409
  329. #define NMPN_CALLBACK      WM_USER+0x40A
  330. #define NMPN_NVEXTEXEC     WM_USER+0x40B
  331. #define NMPN_NETSEND       WM_USER+0x40C
  332. #define NMPN_NVCTL         WM_USER+1215
  333.  
  334.  
  335. //netview->plugin main thread
  336. //NetView posts this messabes to plug-ins thread by PostThreadMessage)
  337. #define NMNP_ACTION        WM_USER+0x403
  338. #define NMNP_HOSTMSG       WM_USER+0x404
  339. #define NMNP_ALERT         WM_USER+0x406
  340. //--------------------------------------------structures
  341. typedef struct _NVHOST{
  342.                       char hostname[128];
  343.                       char hostip[64];
  344.                       DWORD id;         //set this value to zero to get first host.
  345.                       DWORD nextid;
  346.                       DWORD color;      //item color in list
  347.                       DWORD res[4];
  348.                       bool selected;    //item is selected in list
  349.                       }NVHOST,*LPNVHOST;
  350. typedef struct _NVLIST{
  351.                       char name[128];
  352.                       char theme[128];
  353.                       char ltype[128];
  354.                       char llength[128];
  355.                       char lspeed[128];
  356.                       char lnote[128];
  357.                       int  w[32];
  358.                       DWORD id;
  359.                       DWORD nextid;
  360.                       DWORD reserved[128];
  361.                       }NVLIST,*LPNVLIST;
  362. typedef struct _NVLINE{
  363.                       int index;
  364.                       int x[32];//nodes points
  365.                       int y[32];///
  366.                       int nodes;//nodes count
  367.                       DWORD color;
  368.                       int flags;
  369.                       int width;
  370.                       char ltype[128];
  371.                       char llength[128];
  372.                       char lspeed[128];
  373.                       char lnote[128];
  374.                       char mapname[128];
  375.                       DWORD selnode;
  376.                       DWORD reserved[127];
  377.                       }NVLINE,*LPNVLINE;
  378. typedef struct _NVAREA{
  379.                       RECT bounds;
  380.                       DWORD color;
  381.                       char hint[256];
  382.                       char name[256];
  383.                       char mapname[128];
  384.                       DWORD id;
  385.                       DWORD nextid;
  386.                       DWORD reserved[128];
  387.                       }NVAREA,*LPNVAREA;
  388.  
  389. typedef struct _NVRESLIST{
  390.                          union
  391.                           {
  392.                           char name[128];//hostname which resources list to retrieve
  393.                           DWORD id;//if NVRESLIST_USEID specified
  394.                           }host;
  395.                          DWORD reserved[8];
  396.                          int buflen;
  397.                          char bufdata[];
  398.                          }NVRESLIST,*LPNVRESLIST;
  399.  
  400.  
  401. typedef struct _NVNETSEND{
  402.                          char from[256];
  403.                          char to[256];
  404.                          DWORD flags;
  405.                          int msglen;
  406.                          char msg[];
  407.                          }NVNETSEND;
  408.  
  409. typedef struct _NVMENUINFO{DWORD id;       //After NVMENUACTION_SET call with id=0 id
  410.                                            //will be contain menu handle wich can be
  411.                                            //used in subsequent calls NVMENUACTION_SET
  412.                                            //or NVMENUACTION_DEL
  413.                            DWORD msg;      //Message to send to plug-in's thread on click
  414.                            DWORD tid;      //ThreadId to wich send message
  415.                            HICON icon;     //HANDLE to icon or NULL
  416.                            DWORD parentid; //id of the parent menu item or NULL.
  417.                                            //If it is not NULL NVMENUFLAG_MAIN,NVMENUFLAG_CONTEXT,NVMENUFLAG_TRAY
  418.                                            //doesn't matter when creating menu item
  419.                            char text[64];  //item text
  420.                            DWORD flags;    //see NVMENUFLAG_######
  421.                            char reserved[256];//set to zero
  422.                            }NVMENUINFO,*LPNVMENUINFO;
  423. typedef struct _NVMETAVAR{
  424.                           union
  425.                            {
  426.                            char name[128];//hostname which metavariable set or retrieve
  427.                            DWORD id;//if
  428.                            }host;
  429.                           char varname[64];  //variable name. Cannot contain characters
  430.                                              //'#', '$', #0, #13
  431.                           int vallen;        //length of the variable data
  432.                           char val[];        //variable data. Cannot contain characters
  433.                                              //'#', '$', #0, #13
  434.                           }NVMETAVAR,*LPNVMETAVAR;
  435.                           
  436. typedef struct _NVVERSION{unsigned char hi;unsigned char lo;}NVVERSION,*LPNVVERSION;
  437.  
  438. typedef DWORD (WINAPI *NVUPCALL)(//This function must be used instead of SendMessage since NetView v2.82
  439.                                  DWORD ThreadId,//Plug-in's main thread (in what NVPLUGINGO executed)
  440.                                  DWORD Msg,     //NetView call's code (NMPN_...)
  441.                                  DWORD wParam,  //call-specific parameter, usually call flags
  442.                                  DWORD lParam   //call-specific parameter, usually object ID or pointer
  443.                                  );
  444. typedef struct _NVPLUGINGOINFO{
  445.                               HWND nvwnd;             //NetView's plug-in messages processing window hanle
  446.                                                       //use as the 1st parameter in SendMessage
  447.                               HWND nvmainwnd;         //NetView's main window hanle
  448.                               char *inipath;          //path to NetView .ini file
  449.                               char *exepath;          //path and name of NetView.exe file
  450.                               NVUPCALL nvcall;        //SendMessage substitude for call NetView's APIs since NV2.82
  451.                               char reserved[160];
  452.                               }NVPLUGINGOINFO,*LPNVPLUGINGOINFO;
  453. typedef struct _NVPLUGININFO{
  454.                             NVVERSION nvver;//NetView sets this field to it's version
  455.                             NVVERSION retver;//Plug-in should sets this field to it's version
  456.                             char plname[64]; //plug-in name
  457.                             char retstr[128];//plug-in description
  458.                             LPNVPLUGINGOINFO goinfo; //used only with NMPN_PLUGINEX. External thread must allocate this structure
  459.                             DWORD tid;               //used only with NMPN_PLUGINEX. External thread ID.
  460.                             char reserved[244];      //set to zero
  461.                             }NVPLUGININFO,*LPNVPLUGININFO;
  462.  
  463.  
  464.  
  465. //plugin exported functions--------------------
  466.  
  467. typedef DWORD (WINAPI *NVPLUGINGETINFO)(LPNVPLUGININFO);//export name NVPluginGetInfo
  468.  
  469. typedef DWORD (WINAPI *NVPLUGINGO)(LPNVPLUGINGOINFO);   //export name NVPluginGo
  470.  
  471. typedef DWORD (WINAPI *NVPLUGINCONFIG)(void *reserved); //export name NVPluginConfig
  472.                                                         //plugin can don't export this
  473. #pragma pack(pop)                                                        
  474. #endif
  475.