windows-nt/Source/XPSP1/NT/admin/netui/common/h/smx.h
2020-09-26 16:20:57 +08:00

499 lines
16 KiB
C

/**********************************************************************/
/** Microsoft Windows NT **/
/** Copyright(c) Microsoft Corp., 1992 **/
/**********************************************************************/
/*
smx.h
This file contains the common messages, manifests, types, and
structures used by Server Manager Extensions.
NOTE: You must include windows.h and lmcons.h *before* this file.
FILE HISTORY:
KeithMo 19-Oct-1992 Created, version 1.2+ of SMX spec.
KeithMo 07-Dec-1992 Conform with version 1.6 of SMX spec.
JonN 16-May-1996 Added GETSERVERSEL2 and GETCURFOCUS2
*/
#ifndef _SMX_H_
#define _SMX_H_
//
// This is the maximum length allowed for an extension menu item.
//
#define MENU_TEXT_LEN 50
//
// This is the current version number of the extension interface.
// Version 0 is the original version (NT 3.x).
// Version 1 supports GETSERVERSEL2 and GETCURFOCUS2 (NT 4.x).
//
#define SME_VERSION 1
//
// These are the messages sent from the extension to the
// Server Manager application.
//
// SM_GETSELCOUNT
//
// Purpose - Retrieves the number of selected items in
// the specified listbox.
//
// wParam - Listbox index. This 0-based index specifies
// the listbox to query. For the Server Manager,
// this must always be zero.
//
// lParam - Points to an SMS_GETSELCOUNT structure.
//
// Returns - TRUE if successful, FALSE if unsuccessful.
//
//
// SM_GETSERVERSEL[A][2]
// New clients should use version 2 when
// SMS_LOADMENU.dwVersion is 1 or greater.
//
// Purpose - Retrieves a particular selection.
//
// wParam - Selection index. This 0-based index specifies
// the selected item to query. This is useful
// for muliple-select listboxes. Since the Server
// manager uses a single-select listbox, this
// value must always be zero.
//
// lParam - Points to an SMS_GETSERVERSEL[AW] structure.
//
// Returns - TRUE if successful, FALSE if unsuccessful.
//
// SM_GETCURFOCUS[AW][2]
//
// Purpose - Retrieves the current application focus.
// New clients should use version 2 when
// SMS_LOADMENU.dwVersion is 1 or greater.
//
// wParam - Must be zero.
//
// lParam - Points to a SMS_GETCURFOCUS structure.
//
// Returns - TRUE if successful, FALSE if unsuccessful.
//
//
// SM_GETOPTIONS
//
// Purpose - Retrieves the current option settings
//
// wParam - Must be zero.
//
// lParam - Points to a SMS_GETOPTIONS structure.
//
// Returns - TRUE if successful, FALSE if unsuccessful.
//
#define SM_GETSELCOUNT (WM_USER + 1000)
#define SM_GETSERVERSELA (WM_USER + 1001)
#define SM_GETSERVERSELW (WM_USER + 1002)
#define SM_GETCURFOCUSA (WM_USER + 1003)
#define SM_GETCURFOCUSW (WM_USER + 1004)
#define SM_GETOPTIONS (WM_USER + 1005)
#define SM_GETSERVERSEL2A (WM_USER + 1006)
#define SM_GETSERVERSEL2W (WM_USER + 1007)
#define SM_GETCURFOCUS2A (WM_USER + 1008)
#define SM_GETCURFOCUS2W (WM_USER + 1009)
#ifdef UNICODE
#define SM_GETSERVERSEL SM_GETSERVERSELW
#define SM_GETCURFOCUS SM_GETCURFOCUSW
#define SM_GETSERVERSEL2 SM_GETSERVERSEL2W
#define SM_GETCURFOCUS2 SM_GETCURFOCUS2W
#else // !UNICODE
#define SM_GETSERVERSEL SM_GETSERVERSELA
#define SM_GETCURFOCUS SM_GETCURFOCUSA
#define SM_GETSERVERSEL2 SM_GETSERVERSEL2A
#define SM_GETCURFOCUS2 SM_GETCURFOCUS2A
#endif // UNICODE
//
// These structures are used when the extension is
// communicating with the application.
//
//
// The SMS_LOADMENU[AW] structure is passed to the extension's
// SMELoadMenu[AW] entrypoint when the extension is loaded.
//
// dwVersion - On entry to SMELoadMenu[AW], this will
// contain the maximum extension version
// supported by the Server Manager. If the
// extension supports a lower version, it
// should set this field appropriately before
// returning. The Server Manager will use
// the returned value to determine the
// capabilities of the extension.
//
// Version 0 is the original version (NT 3.x).
// Version 1 supports GETSERVERSEL2 and GETCURFOCUS2.
//
// szMenuName - The name of the menu item that is to appear
// in the app's main menu. This value will also
// appear in the "Help On Extensions" submene and
// the "View" menu.
//
// hMenu - A valid HMENU for the popup-menu to be inserted
// into the app's main menu. Ownership of this
// handle transfers to the Server Manager. The
// extension should *not* destroy this handle.
//
// szHelpFileName - The name of the help file associated with this
// extension. This file will be used for the
// "Help On Extensions" menu. This will also be
// used when the user presses [F1] while the
// extension's menu is dropped.
//
// dwServerType - A bitmask containing the appropriate server type
// bit associated with the extension. It is
// assumed that each extension will be associated
// with a unique server type. For example,
// SV_TYPE_WFW represents Windows for Workgroups
// servers.
//
// dwMenuDelta - The Server Manager will apply this delta
// to each menu ID present in hMenu. This is
// to prevent conflicts with other extension's
// menu IDs.
//
typedef struct _SMS_LOADMENUA
{
DWORD dwVersion;
CHAR szMenuName[MENU_TEXT_LEN + 1];
HMENU hMenu;
CHAR szHelpFileName[MAX_PATH];
DWORD dwServerType;
DWORD dwMenuDelta;
} SMS_LOADMENUA, * PSMS_LOADMENUA;
typedef struct _SMS_LOADMENUW
{
DWORD dwVersion;
WCHAR szMenuName[MENU_TEXT_LEN + 1];
HMENU hMenu;
WCHAR szHelpFileName[MAX_PATH];
DWORD dwServerType;
DWORD dwMenuDelta;
} SMS_LOADMENUW, * PSMS_LOADMENUW;
#ifdef UNICODE
#define SMS_LOADMENU SMS_LOADMENUW
#define PSMS_LOADMENU PSMS_LOADMENUW
#else // !UNICODE
#define SMS_LOADMENU SMS_LOADMENUA
#define PSMS_LOADMENU PSMS_LOADMENUA
#endif // UNICODE
//
// The SMS_GETSERVERSEL[AW][2] structure is filled in by the
// Server Manager when it handles SM_GETSERVERSEL[AW][2] messages.
// This is used to return the current selection to the extension.
//
// SMS_GETSERVERSEL is outdated due to the change in server name length,
// use SMS_GETSERVERSEL2 when SMS_LOADMENU.dwVersion is 1 or greater.
//
// szServerName - Will receive the UNC name of the selected
// server.
//
// dwServerType - Will receive the server type mask associated
// with the server. This field may be 0 if
// the type is unknown.
//
typedef struct _SMS_GETSERVERSELA
{
CHAR szServerName[UNCLEN+1];
DWORD dwServerType;
} SMS_GETSERVERSELA, * PSMS_GETSERVERSELA;
typedef struct _SMS_GETSERVERSELW
{
WCHAR szServerName[UNCLEN+1];
DWORD dwServerType;
} SMS_GETSERVERSELW, * PSMS_GETSERVERSELW;
typedef struct _SMS_GETSERVERSEL2A
{
CHAR szServerName[MAX_PATH];
DWORD dwServerType;
} SMS_GETSERVERSEL2A, * PSMS_GETSERVERSEL2A;
typedef struct _SMS_GETSERVERSEL2W
{
WCHAR szServerName[MAX_PATH];
DWORD dwServerType;
} SMS_GETSERVERSEL2W, * PSMS_GETSERVERSEL2W;
#ifdef UNICODE
#define SMS_GETSERVERSEL SMS_GETSERVERSELW
#define PSMS_GETSERVERSEL PSMS_GETSERVERSELW
#define SMS_GETSERVERSEL2 SMS_GETSERVERSEL2W
#define PSMS_GETSERVERSEL2 PSMS_GETSERVERSEL2W
#else // !UNICODE
#define SMS_GETSERVERSEL SMS_GETSERVERSELA
#define PSMS_GETSERVERSEL PSMS_GETSERVERSELA
#define SMS_GETSERVERSEL2 SMS_GETSERVERSEL2A
#define PSMS_GETSERVERSEL2 PSMS_GETSERVERSEL2A
#endif // UNICODE
//
// The SMS_GETSELCOUNT structure is filled in by the Server Manager
// when it handles the SM_GETSELCOUNT message. This is used to
// return the number of selected items to the extension. In the
// current implementation, this will be either 0 (empty listbox)
// or 1 (single selection).
//
// dwItems - The number of selected items in the listbox.
//
typedef struct _SMS_GETSELCOUNT
{
DWORD dwItems;
} SMS_GETSELCOUNT, * PSMS_GETSELCOUNT;
//
// The SMS_GETCURFOCUS[AW][2] structure is filled in by the Server Manager
// when it handles the SM_GETCURFOCUS[2] message. This is used to
// return the current focus of the User Manager application.
//
// SMS_GETCURFOCUS is outdated due to the change in server name length,
// use SMS_GETCURFOCUS2 when SMS_LOADMENU.dwVersion is 1 or greater.
//
// szFocus - The domain name or server name of the current
// focus. Server names can be distinguished
// by the leading backslashes, or by dwFocusType.
//
// dwFocusType - This is the type of focus, either
// SM_FOCUS_TYPE_NT_DOMAIN
// SM_FOCUS_TYPE_LM_DOMAIN
// SM_FOCUS_TYPE_UNKNOWN_DOMAIN
// SM_FOCUS_TYPE_NT_SERVER
// SM_FOCUS_TYPE_LM_SERVER
// SM_FOCUS_TYPE_WFW_SERVER
// SM_FOCUS_TYPE_UNKNOWN_SERVER
//
#define SM_FOCUS_TYPE_NT_DOMAIN 1
#define SM_FOCUS_TYPE_LM_DOMAIN 2
#define SM_FOCUS_TYPE_UNKNOWN_DOMAIN 3
#define SM_FOCUS_TYPE_NT_SERVER 4
#define SM_FOCUS_TYPE_LM_SERVER 5
#define SM_FOCUS_TYPE_WFW_SERVER 6
#define SM_FOCUS_TYPE_UNKNOWN_SERVER 7
typedef struct _SMS_GETCURFOCUSA
{
CHAR szFocus[UNCLEN+1];
DWORD dwFocusType;
} SMS_GETCURFOCUSA, * PSMS_GETCURFOCUSA;
typedef struct _SMS_GETCURFOCUSW
{
WCHAR szFocus[UNCLEN+1];
DWORD dwFocusType;
} SMS_GETCURFOCUSW, * PSMS_GETCURFOCUSW;
typedef struct _SMS_GETCURFOCUS2A
{
CHAR szFocus[MAX_PATH];
DWORD dwFocusType;
} SMS_GETCURFOCUS2A, * PSMS_GETCURFOCUS2A;
typedef struct _SMS_GETCURFOCUS2W
{
WCHAR szFocus[MAX_PATH];
DWORD dwFocusType;
} SMS_GETCURFOCUS2W, * PSMS_GETCURFOCUS2W;
#ifdef UNICODE
#define SMS_GETCURFOCUS SMS_GETCURFOCUSW
#define PSMS_GETCURFOCUS PSMS_GETCURFOCUSW
#define SMS_GETCURFOCUS2 SMS_GETCURFOCUS2W
#define PSMS_GETCURFOCUS2 PSMS_GETCURFOCUS2W
#else // UNICODE
#define SMS_GETCURFOCUS SMS_GETCURFOCUSA
#define PSMS_GETCURFOCUS PSMS_GETCURFOCUSA
#define SMS_GETCURFOCUS2 SMS_GETCURFOCUS2A
#define PSMS_GETCURFOCUS2 PSMS_GETCURFOCUS2A
#endif // UNICODE
//
// The SMS_GETOPTIONS structure is filled in by the Server Manager
// when it handles the SM_GETOPTIONS message. This is used to
// return the current option settings of the Server Manager
// application.
//
// fSaveSettingsOnExit - Should Server Manager settings be saved
// on exit?
//
// fConfirmation - Should permanent and/or dangerous
// actions be confirmed? In the current
// Server Manager implementation, this
// will always be TRUE.
//
typedef struct _SMS_GETOPTIONS
{
BOOL fSaveSettingsOnExit;
BOOL fConfirmation;
} SMS_GETOPTIONS, * PSMS_GETOPTIONS;
//
// The SMS_VALIDATE[AW] structure is passed between the Server Manager
// application and the extension to validate a particular "alien"
// (non-LANMan) server.
//
// pszServer - The (UNC) name of the server to validate. This
// is filled in by the Server Manager.
//
// pszType - The type string to display in the Server Manager's
// main window. This is filled in by the extension.
//
// pszComment - The comment to display in the Server Manager's
// main window. This is filled in by the extension.
//
typedef struct _SMS_VALIDATEA
{
const CHAR * pszServer;
CHAR * pszType;
CHAR * pszComment;
} SMS_VALIDATEA, * PSMS_VALIDATEA;
typedef struct _SMS_VALIDATEW
{
const WCHAR * pszServer;
WCHAR * pszType;
WCHAR * pszComment;
} SMS_VALIDATEW, * PSMS_VALIDATEW;
#ifdef UNICODE
#define SMS_VALIDATE SMS_VALIDATEW
#define PSMS_VALIDATE PSMS_VALIDATEW
#else // UNICODE
#define SMS_VALIDATE SMS_VALIDATEA
#define PSMS_VALIDATE PSMS_VALIDATEA
#endif // UNICODE
//
// These are the names of the extension entrypoints.
//
#define SZ_SME_UNLOADMENU "SMEUnloadMenu"
#define SZ_SME_INITIALIZEMENU "SMEInitializeMenu"
#define SZ_SME_REFRESH "SMERefresh"
#define SZ_SME_MENUACTION "SMEMenuAction"
#define SZ_SME_LOADMENUW "SMELoadMenuW"
#define SZ_SME_GETEXTENDEDERRORSTRINGW "SMEGetExtendedErrorStringW"
#define SZ_SME_VALIDATEW "SMEValidateW"
#define SZ_SME_LOADMENUA "SMELoadMenuA"
#define SZ_SME_GETEXTENDEDERRORSTRINGA "SMEGetExtendedErrorStringA"
#define SZ_SME_VALIDATEA "SMEValidateA"
#ifdef UNICODE
#define SZ_SME_LOADMENU SZ_SME_LOADMENUW
#define SZ_SME_GETEXTENDEDERRORSTRING SZ_SME_GETEXTENDEDERRORSTRINGW
#define SZ_SME_VALIDATE SZ_SME_VALIDATEW
#else // !UNICODE
#define SZ_SME_LOADMENU SZ_SME_LOADMENUA
#define SZ_SME_GETEXTENDEDERRORSTRING SZ_SME_GETEXTENDEDERRORSTRINGA
#define SZ_SME_VALIDATE SZ_SME_VALIDATEA
#endif // UNICODE
//
// Typedefs for the extension entrypoints.
//
typedef DWORD (PASCAL * PSMX_LOADMENU)( HWND hWnd,
PSMS_LOADMENU psmsload );
typedef LPTSTR (PASCAL * PSMX_GETEXTENDEDERRORSTRING)( VOID );
typedef VOID (PASCAL * PSMX_UNLOADMENU)( VOID );
typedef VOID (PASCAL * PSMX_INITIALIZEMENU)( VOID );
typedef VOID (PASCAL * PSMX_REFRESH)( HWND hwndParent );
typedef VOID (PASCAL * PSMX_MENUACTION)( HWND hwndParent, DWORD dwEventId );
typedef BOOL (PASCAL * PSMX_VALIDATE)( PSMS_VALIDATE psmsvalidate );
//
// Prototypes for the extension entrypoints.
//
DWORD PASCAL SMELoadMenuA( HWND hWnd,
PSMS_LOADMENUA psmsload );
DWORD PASCAL SMELoadMenuW( HWND hWnd,
PSMS_LOADMENUW psmsload );
LPSTR PASCAL SMEGetExtendedErrorStringA( VOID );
LPWSTR PASCAL SMEGetExtendedErrorStringW( VOID );
VOID PASCAL SMEUnloadMenu( VOID );
VOID PASCAL SMEInitializeMenu( VOID );
VOID PASCAL SMERefresh( HWND hwndParent );
VOID PASCAL SMEMenuAction( HWND hwndParent, DWORD dwEventId );
BOOL PASCAL SMEValidateA( PSMS_VALIDATEA psmsValidate );
BOOL PASCAL SMEValidateW( PSMS_VALIDATEW psmsValidate );
#endif // _SMX_H_