Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*******************************************************************************
* * waextend.h * * Declarations for structures passed between WinAdmin and ADMINEX.DLL * * copyright notice: Copyright 1997, Citrix Systems Inc. * Copyright (c) 1998 - 1999 Microsoft Corporation * * $Author: unknown $ Don Messerli * * $Log: R:\nt\private\utils\citrix\winutils\tsadmin\vcs\waextend.h $ * * Rev 1.5 22 Feb 1998 15:53:34 unknown * Removed winframe.h dependency * * Rev 1.4 16 Feb 1998 16:02:54 donm * modifications to support pICAsso extension * * Rev 1.1 22 Oct 1997 21:56:54 donm * update * * Rev 1.0 15 Oct 1997 19:19:58 donm * Initial revision. * *******************************************************************************/
#ifndef _WAEXTEND_H
#define _WAEXTEND_H
class CAppServer;
// Messages sent by the extension DLL
#define EXT_MESSAGE_BASE WM_USER + 1000
#define WM_EXT_ADD_APPLICATION EXT_MESSAGE_BASE
#define WM_EXT_ADD_APP_SERVER EXT_MESSAGE_BASE + 1
#define WM_EXT_APP_CHANGED EXT_MESSAGE_BASE + 2
#define WM_EXT_REMOVE_APPLICATION EXT_MESSAGE_BASE + 3
#define WM_EXT_REMOVE_APP_SERVER EXT_MESSAGE_BASE + 4
// Flags for ExtServerInfo
const ULONG ESF_WINFRAME = 0x0001; // Server is running Picasso or WinFrame 1.7
const ULONG ESF_LOAD_BALANCING = 0x0002; // Server is load balancing
const ULONG ESF_NO_LICENSE_PRIVILEGES = 0x0004; // User doesn't have privileges to enumerate licenses
const ULONG ESF_UNLIMITED_LICENSES = 0x0008; // Server has an unlimited user license installed
// Information about a Server
// For the All Server Servers Page
typedef struct _ExtServerInfo { // TCP/IP Address of the server as an ASCII string
TCHAR TcpAddress[50]; // Raw TCP/IP Address of the server
ULONG RawTcpAddress; // IPX Address of the server
TCHAR IpxAddress[50]; ULONG TcpLoadLevel; ULONG IpxLoadLevel; ULONG NetbiosLoadLevel; // License Counts
ULONG ServerPoolInstalled; ULONG ServerPoolInUse; ULONG ServerPoolAvailable; ULONG ServerLocalInstalled; ULONG ServerLocalInUse; ULONG ServerLocalAvailable; ULONG ServerTotalInstalled; ULONG ServerTotalInUse; ULONG ServerTotalAvailable; ULONG NetworkPoolInstalled; ULONG NetworkPoolInUse; ULONG NetworkPoolAvailable; ULONG NetworkLocalInstalled; ULONG NetworkLocalInUse; ULONG NetworkLocalAvailable; ULONG NetworkTotalInstalled; ULONG NetworkTotalInUse; ULONG NetworkTotalAvailable; // Flags
ULONG Flags; } ExtServerInfo;
// Flags for ExtWinStationInfo
// WinStation Extra Info
typedef struct _ExtWinStationInfo { ULONG CacheTiny; ULONG CacheLowMem; ULONG CacheXms; ULONG CacheDASD; ULONG DimCacheSize; ULONG DimBitmapMin; ULONG DimSignatureLevel; // Flags
ULONG Flags; } ExtWinStationInfo;
// Global Extra Info
typedef struct _ExtGlobalInfo { // License Counts
ULONG NetworkPoolInstalled; ULONG NetworkPoolInUse; ULONG NetworkPoolAvailable; ULONG NetworkLocalInstalled; ULONG NetworkLocalInUse; ULONG NetworkLocalAvailable; ULONG NetworkTotalInstalled; ULONG NetworkTotalInUse; ULONG NetworkTotalAvailable; } ExtGlobalInfo;
typedef enum _LICENSECLASS { LicenseBase, LicenseBump, LicenseEnabler, LicenseUnknown } LICENSECLASS;
const ULONG ELF_POOLING = 0x0001; const ULONG ELF_REGISTERED = 0x0002;
typedef struct _ExtLicenseInfo { LICENSECLASS Class; ULONG PoolLicenseCount; ULONG LicenseCount; WCHAR RegSerialNumber[26]; WCHAR LicenseNumber[36]; WCHAR Description[65]; ULONG Flags; } ExtLicenseInfo;
typedef struct _ExtModuleInfo { USHORT Date; USHORT Time; ULONG Size; BYTE LowVersion; BYTE HighVersion; TCHAR Name[13]; } ExtModuleInfo;
typedef struct _ExtAddTreeNode { CObject *pObject; CObject *pParent; HTREEITEM hParent; TCHAR Name[256]; } ExtAddTreeNode;
enum AATYPE { AAT_USER, AAT_LOCAL_GROUP, AAT_GLOBAL_GROUP };
// Published App flags
const ULONG AF_QUERYSUCCESS = 0x00000001; const ULONG AF_ANONYMOUS = 0x00000002; const ULONG AF_INHERIT_CLIENT_SIZE = 0x00000004; const ULONG AF_INHERIT_CLIENT_COLORS = 0x00000008; const ULONG AF_HIDE_TITLE_BAR = 0x00000010; const ULONG AF_MAXIMIZE = 0x00000020; const ULONG AF_CURRENT = 0x00000040;
// A mask to use to clear all flags set with data from the APPCONFIG structure
const ULONG AF_CONFIG_MASK = AF_ANONYMOUS | AF_INHERIT_CLIENT_SIZE | AF_INHERIT_CLIENT_COLORS | AF_HIDE_TITLE_BAR | AF_MAXIMIZE;
// Published Application States (for m_State)
enum APP_STATE { PAS_NONE, PAS_GETTING_INFORMATION, PAS_GOOD };
// Flags that get sent in wParam of WM_EXT_APP_CHANGED message
// telling what has changed
const WPARAM ACF_STATE = 0x0001; const WPARAM ACF_CONFIG = 0x0002; const WPARAM ACF_ALLOWED = 0x0004;
// Published App Window Color Values
const ULONG APP_16_COLOR = 0x0001; const ULONG APP_256_COLOR = 0x0002; const ULONG APP_64K_COLOR = 0x0004; const ULONG APP_16M_COLOR = 0x0008;
class CPublishedApp : public CObject { public: // Constructor
CPublishedApp(TCHAR *name); // Destructor
~CPublishedApp(); // Query Servers
void QueryServers(); // Update with new information
BOOL Update(); // Returns the name of the published app
TCHAR *GetName() { return m_Name; } // Returns the handle to this app's tree item
HTREEITEM GetTreeItem() { return m_hTreeItem; } // Sets the tree item handle
void SetTreeItem(HTREEITEM handle) { m_hTreeItem = handle; } // Returns a pointer to this app's server list
CObList *GetServerList() { return &m_ServerList; } // Locks the server list
void LockServerList() { m_ServerListCriticalSection.Lock(); } // Unlock the server list
void UnlockServerList() { m_ServerListCriticalSection.Unlock(); } // Locks the allowed user list
void LockAllowedUserList() { m_AllowedUserListCriticalSection.Lock(); } // Unlock the allowed user list
void UnlockAllowedUserList() { m_AllowedUserListCriticalSection.Unlock(); } // Returns a pointer to this app's allowed user list
CObList *GetAllowedUserList() { return &m_AllowedUserList; } // returns a pointer to a given CAppServer object if it is in our list
CAppServer *FindServerByName(TCHAR *pServerName); // Returns TRUE if we successfully queried this application
BOOLEAN WasQuerySuccessful() { return (m_Flags & AF_QUERYSUCCESS) > 0; } // Sets the query success flag
void SetQuerySuccess() { m_Flags |= AF_QUERYSUCCESS; } // Returns TRUE if current flag is set
BOOLEAN IsCurrent() { return (m_Flags & AF_CURRENT) > 0; } // Sets the current flag
void SetCurrent() { m_Flags |= AF_CURRENT; } // Clears the current flag
void ClearCurrent() { m_Flags &= ~AF_CURRENT; } // Returns TRUE if application is anonymous
BOOLEAN IsAnonymous() { return (m_Flags & AF_ANONYMOUS) > 0; } // Returns TRUE if application inherits client size
BOOLEAN InheritsClientSize() { return (m_Flags & AF_INHERIT_CLIENT_SIZE) > 0; } // Returns TRUE if application inherits client color
BOOLEAN InheritsClientColors() { return (m_Flags & AF_INHERIT_CLIENT_COLORS) > 0; } // Returns TRUE if application wants title bar hidden
BOOLEAN IsTitleBarHidden() { return (m_Flags & AF_HIDE_TITLE_BAR) > 0; } // Returns TRUE if the application wants to be maximized
BOOLEAN IsMaximize() { return (m_Flags & AF_MAXIMIZE) > 0; } // Returns the Window Scale
ULONG GetWindowScale() { return m_WindowScale; } // Returns the Window Width
ULONG GetWindowWidth() { return m_WindowWidth; } // Returns the Window Height
ULONG GetWindowHeight() { return m_WindowHeight; } // Returns the Window Color
ULONG GetWindowColor() { return m_WindowColor; } // Returns the State
APP_STATE GetState() { return m_State; } // Sets the State
void SetState(APP_STATE state) { m_State = state; } // Checks the State
BOOLEAN IsState(APP_STATE state) { return(m_State == state); }
private: void RemoveAppServer(CAppServer *pAppServer);
static UINT BackgroundThreadProc(LPVOID); CWinThread *m_pBackgroundThread; BOOL m_BackgroundContinue;
// Name of the published application
TCHAR m_Name[256]; // Handle to the tree item for this app in the tree view
HTREEITEM m_hTreeItem; // List of application's server
CObList m_ServerList; // Critical section for locking the server list
CCriticalSection m_ServerListCriticalSection; // Critical section for locking the allowed user list
CCriticalSection m_AllowedUserListCriticalSection; // List of application's allowed users
CObList m_AllowedUserList; // State
APP_STATE m_State;
ULONG m_WindowScale; ULONG m_WindowWidth; ULONG m_WindowHeight; ULONG m_WindowColor;
ULONG m_AppConfigCRC; ULONG m_SrvAppConfigCRC; ULONG m_UserAndGroupListCRC;
// Flags
ULONG m_Flags; };
// AppServer flags
const ULONG ASF_NOT_RESPONDING = 0x00000001; const ULONG ASF_UPDATE_PENDING = 0x00000002; const ULONG ASF_ACCESS_DENIED = 0x00000004; const ULONG ASF_IS_CURRENT_SERVER = 0x00000008; const ULONG ASF_CURRENT = 0x00000010;
class CAppServer : public CObject { public: // Constructor
CAppServer(PVOID pConfig, CPublishedApp *pPublishedApp); // Destructor
~CAppServer(); // Returns TRUE if this is the server that the app is being run from
BOOL IsCurrentServer() { return ((m_Flags & ASF_IS_CURRENT_SERVER) > 0); } // Returns the Published App this server is associated with
CPublishedApp *GetPublishedApp() { return m_pPublishedApp; } // Returns the name of the server
TCHAR *GetName() { return m_Name; } // Returns the Initial Program
TCHAR *GetInitialProgram() { return m_InitialProgram; } // Returns the Working Directory
TCHAR *GetWorkDirectory() { return m_WorkDirectory; } // Sets the tree item
void SetTreeItem(HTREEITEM h) { m_hTreeItem = h; } // Gets the tree item
HTREEITEM GetTreeItem() { return m_hTreeItem; } // Sets the current flag
void SetCurrent() { m_Flags |= ASF_CURRENT; } // Is the current flag set?
BOOL IsCurrent() { return ((m_Flags & ASF_CURRENT) > 0); } // Clears the current flag
void ClearCurrent() { m_Flags &= ~ASF_CURRENT; } // Has the configuration for this AppServer changed
BOOL HasConfigChanged(PVOID);
private: CPublishedApp *m_pPublishedApp; TCHAR m_Name[20]; TCHAR m_InitialProgram[257]; TCHAR m_WorkDirectory[257]; HTREEITEM m_hTreeItem; ULONG m_Flags; };
class CAppAllowed : public CObject { public: // constructor
CAppAllowed(TCHAR *name, AATYPE type) { wcscpy(m_Name, name); m_Type = type; } AATYPE GetType() { return m_Type; }
TCHAR m_Name[257];
private: AATYPE m_Type; };
#endif // _WAEXTEND_H
|