home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / smx.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  14KB  |  434 lines

  1. /**********************************************************************/
  2. /**                       Microsoft Windows NT                       **/
  3. /**          Copyright(c) Microsoft Corporation 1992 - 1999          **/
  4. /**********************************************************************/
  5.  
  6. /*
  7.     smx.h
  8.     This file contains the common messages, manifests, types, and
  9.     structures used by Server Manager Extensions.
  10.  
  11.     NOTE:  You must include windows.h and lmcons.h *before* this file.
  12. */
  13.  
  14.  
  15.  
  16. #ifndef _SMX_H_
  17. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  18. #define _SMX_H_
  19.  
  20.  
  21.  
  22. //
  23. //  This is the maximum length allowed for an extension menu item.
  24. //
  25.  
  26. #define MENU_TEXT_LEN                   50
  27.  
  28.  
  29.  
  30. //
  31. //  This is the current version number of the extension interface.
  32. //
  33.  
  34. #define SME_VERSION                     0
  35.  
  36.  
  37.  
  38. //
  39. //  These are the messages sent from the extension to the
  40. //  Server Manager application.
  41. //
  42. //      SM_GETSELCOUNT
  43. //
  44. //              Purpose - Retrieves the number of selected items in
  45. //                        the specified listbox.
  46. //
  47. //              wParam  - Listbox index.  This 0-based index specifies
  48. //                        the listbox to query.  For the Server Manager,
  49. //                        this must always be zero.
  50. //
  51. //              lParam  - Points to an SMS_GETSELCOUNT structure.
  52. //
  53. //              Returns - TRUE  if successful, FALSE if unsuccessful.
  54. //
  55. //
  56. //      SM_GETSERVERSEL[A]
  57. //
  58. //              Purpose - Retrieves a particular selection.
  59. //
  60. //              wParam  - Selection index.  This 0-based index specifies
  61. //                        the selected item to query.  This is useful
  62. //                        for muliple-select listboxes.  Since the Server
  63. //                        manager uses a single-select listbox, this
  64. //                        value must always be zero.
  65. //
  66. //              lParam  - Points to an SMS_GETSERVERSEL[AW] structure.
  67. //
  68. //              Returns - TRUE  if successful, FALSE if unsuccessful.
  69. //
  70. //      SM_GETCURFOCUS[AW]
  71. //
  72. //              Purpose - Retrieves the current application focus.
  73. //
  74. //              wParam  - Must be zero.
  75. //
  76. //              lParam  - Points to a SMS_GETCURFOCUS structure.
  77. //
  78. //              Returns - TRUE if successful, FALSE if unsuccessful.
  79. //
  80. //
  81. //      SM_GETOPTIONS
  82. //
  83. //              Purpose - Retrieves the current option settings
  84. //
  85. //              wParam  - Must be zero.
  86. //
  87. //              lParam  - Points to a SMS_GETOPTIONS structure.
  88. //
  89. //              Returns - TRUE if successful, FALSE if unsuccessful.
  90. //
  91.  
  92. #define SM_GETSELCOUNT                  (WM_USER + 1000)
  93. #define SM_GETSERVERSELA                (WM_USER + 1001)
  94. #define SM_GETSERVERSELW                (WM_USER + 1002)
  95. #define SM_GETCURFOCUSA                 (WM_USER + 1003)
  96. #define SM_GETCURFOCUSW                 (WM_USER + 1004)
  97. #define SM_GETOPTIONS                   (WM_USER + 1005)
  98.  
  99. #ifdef UNICODE
  100. #define SM_GETSERVERSEL                 SM_GETSERVERSELW
  101. #define SM_GETCURFOCUS                  SM_GETCURFOCUSW
  102. #else   // !UNICODE
  103. #define SM_GETSERVERSEL                 SM_GETSERVERSELA
  104. #define SM_GETCURFOCUS                  SM_GETCURFOCUSA
  105. #endif  // UNICODE
  106.  
  107.  
  108.  
  109. //
  110. //  These structures are used when the extension is
  111. //  communicating with the application.
  112. //
  113.  
  114.  
  115. //
  116. //  The SMS_LOADMENU[AW] structure is passed to the extension's
  117. //  SMELoadMenu[AW] entrypoint when the extension is loaded.
  118. //
  119. //      dwVersion       - On entry to SMELoadMenu[AW], this will
  120. //                        contain the maximum extension version
  121. //                        supported by the Server Manager.  If the
  122. //                        extension supports a lower version, it
  123. //                        should set this field appropriately before
  124. //                        returning.  The Server Manager will use
  125. //                        the returned value to determine the
  126. //                        capabilities of the extension.
  127. //
  128. //      szMenuName      - The name of the menu item that is to appear
  129. //                        in the app's main menu.  This value will also
  130. //                        appear in the "Help On Extensions" submene and
  131. //                        the "View" menu.
  132. //
  133. //      hMenu           - A valid HMENU for the popup-menu to be inserted
  134. //                        into the app's main menu.  Ownership of this
  135. //                        handle transfers to the Server Manager.  The
  136. //                        extension should *not* destroy this handle.
  137. //
  138. //      szHelpFileName  - The name of the help file associated with this
  139. //                        extension.  This file will be used for the
  140. //                        "Help On Extensions" menu.  This will also be
  141. //                        used when the user presses [F1] while the
  142. //                        extension's menu is dropped.
  143. //
  144. //      dwServerType    - A bitmask containing the appropriate server type
  145. //                        bit associated with the extension.  It is
  146. //                        assumed that each extension will be associated
  147. //                        with a unique server type.  For example,
  148. //                        SV_TYPE_WFW represents Windows for Workgroups
  149. //                        servers.
  150. //
  151. //      dwMenuDelta     - The Server Manager will apply this delta
  152. //                        to each menu ID present in hMenu.  This is
  153. //                        to prevent conflicts with other extension's
  154. //                        menu IDs.
  155. //
  156.  
  157. typedef struct _SMS_LOADMENUA
  158. {
  159.     DWORD       dwVersion;
  160.     CHAR        szMenuName[MENU_TEXT_LEN + 1];
  161.     HMENU       hMenu;
  162.     CHAR        szHelpFileName[MAX_PATH];
  163.     DWORD       dwServerType;
  164.     DWORD       dwMenuDelta;
  165.  
  166. } SMS_LOADMENUA, * PSMS_LOADMENUA;
  167.  
  168. typedef struct _SMS_LOADMENUW
  169. {
  170.     DWORD       dwVersion;
  171.     WCHAR       szMenuName[MENU_TEXT_LEN + 1];
  172.     HMENU       hMenu;
  173.     WCHAR       szHelpFileName[MAX_PATH];
  174.     DWORD       dwServerType;
  175.     DWORD       dwMenuDelta;
  176.  
  177. } SMS_LOADMENUW, * PSMS_LOADMENUW;
  178.  
  179. #ifdef UNICODE
  180. #define SMS_LOADMENU                    SMS_LOADMENUW
  181. #define PSMS_LOADMENU                   PSMS_LOADMENUW
  182. #else   // !UNICODE
  183. #define SMS_LOADMENU                    SMS_LOADMENUA
  184. #define PSMS_LOADMENU                   PSMS_LOADMENUA
  185. #endif  // UNICODE
  186.  
  187.  
  188. //
  189. //  The SMS_GETSERVERSEL[AW] structure is filled in by the
  190. //  Server Manager when it handles SM_GETSERVERSEL[AW] messages.
  191. //  This is used to return the current selection to the extension.
  192. //
  193. //      szServerName    - Will receive the UNC name of the selected
  194. //                        server.
  195. //
  196. //      dwServerType    - Will receive the server type mask associated
  197. //                        with the server.  This field may be 0 if
  198. //                        the type is unknown.
  199. //
  200.  
  201. typedef struct _SMS_GETSERVERSELA
  202. {
  203.     CHAR        szServerName[MAX_PATH];
  204.     DWORD       dwServerType;
  205.  
  206. } SMS_GETSERVERSELA, * PSMS_GETSERVERSELA;
  207.  
  208. typedef struct _SMS_GETSERVERSELW
  209. {
  210.     WCHAR       szServerName[MAX_PATH];
  211.     DWORD       dwServerType;
  212.  
  213. } SMS_GETSERVERSELW, * PSMS_GETSERVERSELW;
  214.  
  215. #ifdef UNICODE
  216. #define SMS_GETSERVERSEL                SMS_GETSERVERSELW
  217. #define PSMS_GETSERVERSEL               PSMS_GETSERVERSELW
  218. #else   // !UNICODE
  219. #define SMS_GETSERVERSEL                SMS_GETSERVERSELA
  220. #define PSMS_GETSERVERSEL               PSMS_GETSERVERSELA
  221. #endif  // UNICODE
  222.  
  223.  
  224. //
  225. //  The SMS_GETSELCOUNT structure is filled in by the Server Manager
  226. //  when it handles the SM_GETSELCOUNT message.  This is used to
  227. //  return the number of selected items to the extension.  In the
  228. //  current implementation, this will be either 0 (empty listbox)
  229. //  or 1 (single selection).
  230. //
  231. //      dwItems         - The number of selected items in the listbox.
  232. //
  233.  
  234. typedef struct _SMS_GETSELCOUNT
  235. {
  236.     DWORD       dwItems;
  237. } SMS_GETSELCOUNT, * PSMS_GETSELCOUNT;
  238.  
  239.  
  240. //
  241. //  The SMS_GETCURFOCUS[AW] structure is filled in by the Server Manager
  242. //  when it handles the SM_GETCURFOCUS message.  This is used to
  243. //  return the current focus of the User Manager application.
  244. //
  245. //      szFocus         - The domain name or server name of the current
  246. //                        focus.  Server names can be distinguished
  247. //                        by the leading backslashes, or by dwFocusType.
  248. //
  249. //      dwFocusType     - This is the type of focus, either
  250. //                        SM_FOCUS_TYPE_NT_DOMAIN
  251. //                        SM_FOCUS_TYPE_LM_DOMAIN
  252. //                        SM_FOCUS_TYPE_UNKNOWN_DOMAIN
  253. //                        SM_FOCUS_TYPE_NT_SERVER
  254. //                        SM_FOCUS_TYPE_LM_SERVER
  255. //                        SM_FOCUS_TYPE_WFW_SERVER
  256. //                        SM_FOCUS_TYPE_UNKNOWN_SERVER
  257. //
  258.  
  259. #define SM_FOCUS_TYPE_NT_DOMAIN         1
  260. #define SM_FOCUS_TYPE_LM_DOMAIN         2
  261. #define SM_FOCUS_TYPE_UNKNOWN_DOMAIN    3
  262. #define SM_FOCUS_TYPE_NT_SERVER         4
  263. #define SM_FOCUS_TYPE_LM_SERVER         5
  264. #define SM_FOCUS_TYPE_WFW_SERVER        6
  265. #define SM_FOCUS_TYPE_UNKNOWN_SERVER    7
  266.  
  267. typedef struct _SMS_GETCURFOCUSA
  268. {
  269.     CHAR        szFocus[MAX_PATH];
  270.     DWORD       dwFocusType;
  271.  
  272. } SMS_GETCURFOCUSA, * PSMS_GETCURFOCUSA;
  273.  
  274. typedef struct _SMS_GETCURFOCUSW
  275. {
  276.     WCHAR       szFocus[MAX_PATH];
  277.     DWORD       dwFocusType;
  278.  
  279. } SMS_GETCURFOCUSW, * PSMS_GETCURFOCUSW;
  280.  
  281. #ifdef UNICODE
  282. #define SMS_GETCURFOCUS             SMS_GETCURFOCUSW
  283. #define PSMS_GETCURFOCUS            PSMS_GETCURFOCUSW
  284. #else   // UNICODE
  285. #define SMS_GETCURFOCUS             SMS_GETCURFOCUSA
  286. #define PSMS_GETCURFOCUS            PSMS_GETCURFOCUSA
  287. #endif  // UNICODE
  288.  
  289.  
  290. //
  291. //  The SMS_GETOPTIONS structure is filled in by the Server Manager
  292. //  when it handles the SM_GETOPTIONS message.  This is used to
  293. //  return the current option settings of the Server Manager
  294. //  application.
  295. //
  296. //      fSaveSettingsOnExit     - Should Server Manager settings be saved
  297. //                                on exit?
  298. //
  299. //      fConfirmation           - Should permanent and/or dangerous
  300. //                                actions be confirmed?  In the current
  301. //                                Server Manager implementation, this
  302. //                                will always be TRUE.
  303. //
  304.  
  305. typedef struct _SMS_GETOPTIONS
  306. {
  307.     BOOL        fSaveSettingsOnExit;
  308.     BOOL        fConfirmation;
  309.  
  310. } SMS_GETOPTIONS, * PSMS_GETOPTIONS;
  311.  
  312.  
  313. //
  314. //  The SMS_VALIDATE[AW] structure is passed between the Server Manager
  315. //  application and the extension to validate a particular "alien"
  316. //  (non-LANMan) server.
  317. //
  318. //      pszServer       - The (UNC) name of the server to validate.  This
  319. //                        is filled in by the Server Manager.
  320. //
  321. //      pszType         - The type string to display in the Server Manager's
  322. //                        main window.  This is filled in by the extension.
  323. //
  324. //      pszComment      - The comment to display in the Server Manager's
  325. //                        main window.  This is filled in by the extension.
  326. //
  327.  
  328. typedef struct _SMS_VALIDATEA
  329. {
  330.     const CHAR * pszServer;
  331.     CHAR       * pszType;
  332.     CHAR       * pszComment;
  333.  
  334. } SMS_VALIDATEA, * PSMS_VALIDATEA;
  335.  
  336. typedef struct _SMS_VALIDATEW
  337. {
  338.     const WCHAR * pszServer;
  339.     WCHAR       * pszType;
  340.     WCHAR       * pszComment;
  341.  
  342. } SMS_VALIDATEW, * PSMS_VALIDATEW;
  343.  
  344. #ifdef UNICODE
  345. #define SMS_VALIDATE                SMS_VALIDATEW
  346. #define PSMS_VALIDATE               PSMS_VALIDATEW
  347. #else   // UNICODE
  348. #define SMS_VALIDATE                SMS_VALIDATEA
  349. #define PSMS_VALIDATE               PSMS_VALIDATEA
  350. #endif  // UNICODE
  351.  
  352.  
  353.  
  354. //
  355. //  These are the names of the extension entrypoints.
  356. //
  357.  
  358. #define SZ_SME_UNLOADMENU               "SMEUnloadMenu"
  359. #define SZ_SME_INITIALIZEMENU           "SMEInitializeMenu"
  360. #define SZ_SME_REFRESH                  "SMERefresh"
  361. #define SZ_SME_MENUACTION               "SMEMenuAction"
  362.  
  363. #define SZ_SME_LOADMENUW                "SMELoadMenuW"
  364. #define SZ_SME_GETEXTENDEDERRORSTRINGW  "SMEGetExtendedErrorStringW"
  365. #define SZ_SME_VALIDATEW                "SMEValidateW"
  366.  
  367. #define SZ_SME_LOADMENUA                "SMELoadMenuA"
  368. #define SZ_SME_GETEXTENDEDERRORSTRINGA  "SMEGetExtendedErrorStringA"
  369. #define SZ_SME_VALIDATEA                "SMEValidateA"
  370.  
  371. #ifdef UNICODE
  372. #define SZ_SME_LOADMENU                 SZ_SME_LOADMENUW
  373. #define SZ_SME_GETEXTENDEDERRORSTRING   SZ_SME_GETEXTENDEDERRORSTRINGW
  374. #define SZ_SME_VALIDATE                 SZ_SME_VALIDATEW
  375. #else   // !UNICODE
  376. #define SZ_SME_LOADMENU                 SZ_SME_LOADMENUA
  377. #define SZ_SME_GETEXTENDEDERRORSTRING   SZ_SME_GETEXTENDEDERRORSTRINGA
  378. #define SZ_SME_VALIDATE                 SZ_SME_VALIDATEA
  379. #endif  // UNICODE
  380.  
  381.  
  382.  
  383. //
  384. //  Typedefs for the extension entrypoints.
  385. //
  386.  
  387. typedef DWORD (PASCAL * PSMX_LOADMENU)( HWND          hWnd,
  388.                                         PSMS_LOADMENU psmsload );
  389.  
  390. typedef LPTSTR (PASCAL * PSMX_GETEXTENDEDERRORSTRING)( VOID );
  391.  
  392. typedef VOID (PASCAL * PSMX_UNLOADMENU)( VOID );
  393.  
  394. typedef VOID (PASCAL * PSMX_INITIALIZEMENU)( VOID );
  395.  
  396. typedef VOID (PASCAL * PSMX_REFRESH)( HWND hwndParent );
  397.  
  398. typedef VOID (PASCAL * PSMX_MENUACTION)( HWND hwndParent, DWORD dwEventId );
  399.  
  400. typedef BOOL (PASCAL * PSMX_VALIDATE)( PSMS_VALIDATE psmsvalidate );
  401.  
  402.  
  403.  
  404. //
  405. //  Prototypes for the extension entrypoints.
  406. //
  407.  
  408. DWORD PASCAL SMELoadMenuA( HWND           hWnd,
  409.                            PSMS_LOADMENUA psmsload );
  410.  
  411. DWORD PASCAL SMELoadMenuW( HWND           hWnd,
  412.                            PSMS_LOADMENUW psmsload );
  413.  
  414. LPSTR  PASCAL SMEGetExtendedErrorStringA( VOID );
  415.  
  416. LPWSTR PASCAL SMEGetExtendedErrorStringW( VOID );
  417.  
  418. VOID PASCAL SMEUnloadMenu( VOID );
  419.  
  420. VOID PASCAL SMEInitializeMenu( VOID );
  421.  
  422. VOID PASCAL SMERefresh( HWND hwndParent );
  423.  
  424. VOID PASCAL SMEMenuAction( HWND hwndParent, DWORD dwEventId );
  425.  
  426. BOOL PASCAL SMEValidateA( PSMS_VALIDATEA psmsValidate );
  427.  
  428. BOOL PASCAL SMEValidateW( PSMS_VALIDATEW psmsValidate );
  429.  
  430.  
  431.  
  432. #pragma option pop /*P_O_Pop*/
  433. #endif  // _SMX_H_
  434.