|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
tsappcmp.h
Abstract:
Terminal server application compatibility support
Author:
Revision History:
--*/
#ifndef _INC_TSAPPCMP #define _INC_TSAPPCMP
// @@BEGIN_DDKSPLIT
#define TERMSRV_VALUE \ L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Compatibility\\Registry Values"
#define TERMSRV_INSTALL \ L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install"
#define TERMSRV_USERREGISTRY \ L"\\Registry\\User"
#define TERMSRV_MACHINEREGISTRY \ L"\\Registry\\Machine"
#define TERMSRV_CLASSES \ L"\\Registry\\Machine\\Software\\Classes"
#define TERMSRV_INSTALLCLASSES \ L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server\\Install\\Software\\Classes"
#define TERMSRV_CLASSES_SIZE sizeof(WCHAR)*(sizeof(TERMSRV_INSTALLCLASSES)+1)
#define TERMSRV_SOFTWARECLASSES \ L"\\Software\\Classes"
#define TERMSRV_COPYONCEFLAG \ L"TermSrvCopyKeyOnce"
// // Compat flags for the register command, used for import table patching at run time. // #define TERMSRV_COMPAT_DONT_PATCH_IN_LOAD_LIBS 0x00000001 // turn off the new Whistler defaul behavior which patches all // load libs to go thru our redirected load lib first. // // The images marked as GLOBAL would still patch in the loadlibs // regardless of this flag #define TERMSRV_COMPAT_IAT_FLAGS L"IAT" // flags used by the register module which patches // the import-address-table // So far, the following flags are defines/used: // TERMSRV_COMPAT_DONT_PATCH_IN_LOAD_LIBS //
// // Application compatibility flags // #define TERMSRV_COMPAT_DOS 0x00000001 #define TERMSRV_COMPAT_OS2 0x00000002 #define TERMSRV_COMPAT_WIN16 0x00000004 #define TERMSRV_COMPAT_WIN32 0x00000008 #define TERMSRV_COMPAT_ALL 0x0000000F #define TERMSRV_COMPAT_USERNAME 0x00000010 // return username for computername #define TERMSRV_COMPAT_CTXBLDNUM 0x00000020 // return Terminal Server build number #define TERMSRV_COMPAT_INISYNC 0x00000040 // sync user ini file to system #define TERMSRV_COMPAT_ININOSUB 0x00000080 // Don't subst. user dir for sys dir #define TERMSRV_COMPAT_NOREGMAP 0x00000100 // Disable registry mapping for app #define TERMSRV_COMPAT_PEROBJMAP 0x00000200 // Per object user/system global mapping #define TERMSRV_COMPAT_SYSWINDIR 0x00000400 // return system windows directory #define TERMSRV_COMPAT_PHYSMEMLIM \ 0x00000800 // Limit the reported physical memory info #define TERMSRV_COMPAT_LOGOBJCREATE \ 0x00001000 // Log object creation to file #define TERMSRV_COMPAT_SYSREGMAP 0x00002000 // Let system processes take advantage of // registry mapping. #define TERMSRV_COMPAT_PERUSERWINDIR \ 0x00004000 // Log object creation to file
#define TERMSRV_COMPAT_WAIT_USING_JOB_OBJECTS \ 0x00008000 // Use kernelJobObject for tracking // execution completion, since some apps, // such as VS60WIX.EXE self spawn and // parent dies immediately.
#define TERMSRV_COMPAT_NO_ENABLE_ACCESS_FLAG_MODIFICATION 0x00010000 #define TERMSRV_COMPAT_NO_PER_USER_CLASSES_REDIRECTION 0x00020000
#define TERMSRV_COMPAT_KBDPOLL_NOSLEEP \ 0x20000000 // Don't put app to sleep on unsuccessful // keyboard polling (WIN16 only)
#define TERMSRV_COMPAT_APP NTAPI_COMPAT_APPS_REG_PREFIX
//Registry extension flags #define TERMSRV_SOFTWARE \ L"\\Registry\\Machine\\Software" #define TERMSRV_BASE \ L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Terminal Server" #define TERMSRV_ENABLE_ACCESS_FLAG_MODIFICATION 0x00000001 #define TERMSRV_ENABLE_PER_USER_CLASSES_REDIRECTION 0x00000002 void GetRegistryExtensionFlags(); extern DWORD gdwRegistryExtensionFlags;
// // Clipboard compatibility flags // #define TERMSRV_COMPAT_CLIPBRD_METAFILE 0x00000008
typedef enum _TERMSRV_COMPATIBILITY_CLASS { CompatibilityApp = 1, CompatibilityIniFile, CompatibilityRegEntry } TERMSRV_COMPATIBILITY_CLASS, *PTERMSRV_COMPATIBILITY_CLASS;
#define IsTerminalServer() (BOOLEAN)(USER_SHARED_DATA->SuiteMask & (1 << TerminalServer))
void InitializeTermsrvFpns(void);
//Kernel32 API's typedef PWCHAR (*PTERMSRVFORMATOBJECTNAME) ( IN LPCWSTR SrcObjectName ); extern PTERMSRVFORMATOBJECTNAME gpTermsrvFormatObjectName;
typedef DWORD (*PTERMSRVGETCOMPUTERNAME) ( OUT LPWSTR lpBuffer, OUT LPDWORD nSize ); extern PTERMSRVGETCOMPUTERNAME gpTermsrvGetComputerName;
typedef void (*PTERMSRVADJUSTPHYMEMLIMITS) ( IN OUT PULONG_PTR TotalPhys, IN OUT PULONG_PTR AvailPhys, IN DWORD SysPageSize ); extern PTERMSRVADJUSTPHYMEMLIMITS gpTermsrvAdjustPhyMemLimits;
typedef UINT (*PTERMSRVGETWINDOWSDIRECTORYA) ( OUT LPSTR lpBuffer, OUT UINT uSize ); extern PTERMSRVGETWINDOWSDIRECTORYA gpTermsrvGetWindowsDirectoryA;
typedef UINT (*PTERMSRVGETWINDOWSDIRECTORYW) ( OUT LPWSTR lpBuffer, OUT UINT uSize );
extern PTERMSRVGETWINDOWSDIRECTORYW gpTermsrvGetWindowsDirectoryW;
typedef NTSTATUS (* PTERMSRVCONVERTSYSROOTTOUSERDIR)( OUT PUNICODE_STRING pFQPath, IN PUNICODE_STRING BaseWindowsDirectory ); extern PTERMSRVCONVERTSYSROOTTOUSERDIR gpTermsrvConvertSysRootToUserDir;
typedef NTSTATUS (*PTERMSRVBUILDINIFILENAME)( OUT PUNICODE_STRING pFQName, IN PUNICODE_STRING pBaseFileName );
extern PTERMSRVBUILDINIFILENAME gpTermsrvBuildIniFileName;
typedef VOID (*PTERMSRVCORINIFILE)( PUNICODE_STRING pUserFullPath );
extern PTERMSRVCORINIFILE gpTermsrvCORIniFile;
typedef BOOL (* PTERMSRVCREATEREGENTRY)(IN HANDLE hKey, IN POBJECT_ATTRIBUTES pObjAttr, IN ULONG TitleIndex, IN PUNICODE_STRING pUniClass OPTIONAL, IN ULONG ulCreateOpt);
extern PTERMSRVCREATEREGENTRY gpfnTermsrvCreateRegEntry;
typedef BOOL (*PTERMSRVOPENREGENTRY)(OUT PHANDLE pUserhKey, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES pUserObjectAttr);
extern PTERMSRVOPENREGENTRY gpfnTermsrvOpenRegEntry;
typedef BOOL (*PTERMSRVSETVALUEKEY)(HANDLE hKey, PUNICODE_STRING ValueName, ULONG TitleIndex, ULONG Type, PVOID Data, ULONG DataSize); extern PTERMSRVSETVALUEKEY gpfnTermsrvSetValueKey;
typedef BOOL (* PTERMSRVDELETEKEY)(HANDLE hKey);
extern PTERMSRVDELETEKEY gpfnTermsrvDeleteKey;
typedef BOOL (*PTERMSRVDELETEVALUE)(HANDLE hKey, PUNICODE_STRING pUniValue); extern PTERMSRVDELETEVALUE gpfnTermsrvDeleteValue;
typedef BOOL (* PTERMSRVRESTOREKEY)(IN HANDLE hKey, IN HANDLE hFile, IN ULONG Flags); extern PTERMSRVRESTOREKEY gpfnTermsrvRestoreKey;
typedef BOOL (* PTERMSRVSETKEYSECURITY)(IN HANDLE hKey, IN SECURITY_INFORMATION SecInfo, IN PSECURITY_DESCRIPTOR pSecDesc);
extern PTERMSRVSETKEYSECURITY gpfnTermsrvSetKeySecurity;
typedef BOOL (* PTERMSRVOPENUSERCLASSES)(IN ACCESS_MASK DesiredAccess, OUT PHANDLE pUserhKey); extern PTERMSRVOPENUSERCLASSES gpfnTermsrvOpenUserClasses;
typedef NTSTATUS ( * PTERMSRVGETPRESETVALUE)( IN HANDLE hKey, IN PUNICODE_STRING pValueName, IN ULONG Type, OUT PVOID *Data ); extern PTERMSRVGETPRESETVALUE gpfnTermsrvGetPreSetValue;
typedef int (*PTERMSRVUPDATEALLUSERMENU)(int RunMode); extern PTERMSRVUPDATEALLUSERMENU gpTermsrvUpdateAllUserMenu;
typedef ULONG ( *PGETTERMSRCOMPATFLAGS)(LPWSTR, LPDWORD, TERMSRV_COMPATIBILITY_CLASS); extern PGETTERMSRCOMPATFLAGS gpGetTermsrCompatFlags;
typedef BOOL (*PTERMSRVBUILDSYSINIPATH) ( PUNICODE_STRING pIniPath, PUNICODE_STRING pSysPath, PUNICODE_STRING pUserPath );
extern PTERMSRVBUILDSYSINIPATH gpTermsrvBuildSysIniPath;
typedef BOOL (* PTERMSRVCOPYINIFILE)( PUNICODE_STRING pSysFullPath, PUNICODE_STRING pUserBasePath, PUNICODE_STRING pUserFullPath ); extern PTERMSRVCOPYINIFILE gpTermsrvCopyIniFile;
typedef NTSTATUS (* PTERMSRVGETSTRING)( HANDLE SrcHandle, PCHAR *ppStringPtr, PULONG pStringSize, PCHAR pIOBuf, ULONG IOBufSize, PULONG pIOBufIndex, PULONG pIOBufFillSize );
extern PTERMSRVGETSTRING gpTermsrvGetString;
typedef BOOL (*PTERMSRVLOGINSTALLINIFILE)(PUNICODE_STRING NtFileName);
extern PTERMSRVLOGINSTALLINIFILE gpTermsrvLogInstallIniFile;
// @@END_DDKSPLIT
#ifdef __cplusplus extern "C" { #endif WINBASEAPI BOOL WINAPI TermsrvAppInstallMode( VOID );
WINBASEAPI BOOL WINAPI SetTermsrvAppInstallMode( BOOL bState ); #ifdef __cplusplus } #endif
#endif
|