os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/win/tclWinInt.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 /*
     2  * tclWinInt.h --
     3  *
     4  *	Declarations of Windows-specific shared variables and procedures.
     5  *
     6  * Copyright (c) 1994-1996 Sun Microsystems, Inc.
     7  *
     8  * See the file "license.terms" for information on usage and redistribution
     9  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
    10  *
    11  * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.5 2006/03/10 10:35:25 vincentdarley Exp $
    12  */
    13 
    14 #ifndef _TCLWININT
    15 #define _TCLWININT
    16 
    17 #ifndef _TCLINT
    18 #include "tclInt.h"
    19 #endif
    20 #ifndef _TCLPORT
    21 #include "tclPort.h"
    22 #endif
    23 
    24 /*
    25  * The following specifies how much stack space TclpCheckStackSpace()
    26  * ensures is available.  TclpCheckStackSpace() is called by Tcl_EvalObj()
    27  * to help avoid overflowing the stack in the case of infinite recursion.
    28  */
    29 
    30 #define TCL_WIN_STACK_THRESHOLD 0x8000
    31 
    32 #ifdef BUILD_tcl
    33 # undef TCL_STORAGE_CLASS
    34 # define TCL_STORAGE_CLASS DLLEXPORT
    35 #endif
    36 
    37 /*
    38  * Some versions of Borland C have a define for the OSVERSIONINFO for
    39  * Win32s and for NT, but not for Windows 95.
    40  * Define VER_PLATFORM_WIN32_CE for those without newer headers.
    41  */
    42 
    43 #ifndef VER_PLATFORM_WIN32_WINDOWS
    44 #define VER_PLATFORM_WIN32_WINDOWS 1
    45 #endif
    46 #ifndef VER_PLATFORM_WIN32_CE
    47 #define VER_PLATFORM_WIN32_CE 3
    48 #endif
    49 
    50 /*
    51  * The following structure keeps track of whether we are using the 
    52  * multi-byte or the wide-character interfaces to the operating system.
    53  * System calls should be made through the following function table.
    54  */
    55 
    56 typedef union {
    57     WIN32_FIND_DATAA a;
    58     WIN32_FIND_DATAW w;
    59 } WIN32_FIND_DATAT;
    60 
    61 typedef struct TclWinProcs {
    62     int useWide;
    63 
    64     BOOL (WINAPI *buildCommDCBProc)(CONST TCHAR *, LPDCB);
    65     TCHAR *(WINAPI *charLowerProc)(TCHAR *);
    66     BOOL (WINAPI *copyFileProc)(CONST TCHAR *, CONST TCHAR *, BOOL);
    67     BOOL (WINAPI *createDirectoryProc)(CONST TCHAR *, LPSECURITY_ATTRIBUTES);
    68     HANDLE (WINAPI *createFileProc)(CONST TCHAR *, DWORD, DWORD, 
    69 	    LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
    70     BOOL (WINAPI *createProcessProc)(CONST TCHAR *, TCHAR *, 
    71 	    LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, 
    72 	    LPVOID, CONST TCHAR *, LPSTARTUPINFOA, LPPROCESS_INFORMATION);
    73     BOOL (WINAPI *deleteFileProc)(CONST TCHAR *);
    74     HANDLE (WINAPI *findFirstFileProc)(CONST TCHAR *, WIN32_FIND_DATAT *);
    75     BOOL (WINAPI *findNextFileProc)(HANDLE, WIN32_FIND_DATAT *);
    76     BOOL (WINAPI *getComputerNameProc)(WCHAR *, LPDWORD);
    77     DWORD (WINAPI *getCurrentDirectoryProc)(DWORD, WCHAR *);
    78     DWORD (WINAPI *getFileAttributesProc)(CONST TCHAR *);
    79     DWORD (WINAPI *getFullPathNameProc)(CONST TCHAR *, DWORD nBufferLength, 
    80 	    WCHAR *, TCHAR **);
    81     DWORD (WINAPI *getModuleFileNameProc)(HMODULE, WCHAR *, int);
    82     DWORD (WINAPI *getShortPathNameProc)(CONST TCHAR *, WCHAR *, DWORD); 
    83     UINT (WINAPI *getTempFileNameProc)(CONST TCHAR *, CONST TCHAR *, UINT, 
    84 	    WCHAR *);
    85     DWORD (WINAPI *getTempPathProc)(DWORD, WCHAR *);
    86     BOOL (WINAPI *getVolumeInformationProc)(CONST TCHAR *, WCHAR *, DWORD, 
    87 	    LPDWORD, LPDWORD, LPDWORD, WCHAR *, DWORD);
    88     HINSTANCE (WINAPI *loadLibraryProc)(CONST TCHAR *);
    89     TCHAR (WINAPI *lstrcpyProc)(WCHAR *, CONST TCHAR *);
    90     BOOL (WINAPI *moveFileProc)(CONST TCHAR *, CONST TCHAR *);
    91     BOOL (WINAPI *removeDirectoryProc)(CONST TCHAR *);
    92     DWORD (WINAPI *searchPathProc)(CONST TCHAR *, CONST TCHAR *, 
    93 	    CONST TCHAR *, DWORD, WCHAR *, TCHAR **);
    94     BOOL (WINAPI *setCurrentDirectoryProc)(CONST TCHAR *);
    95     BOOL (WINAPI *setFileAttributesProc)(CONST TCHAR *, DWORD);
    96     /* 
    97      * These two function pointers will only be set when
    98      * Tcl_FindExecutable is called.  If you don't ever call that
    99      * function, the application will crash whenever WinTcl tries to call
   100      * functions through these null pointers.  That is not a bug in Tcl
   101      * -- Tcl_FindExecutable is obligatory in recent Tcl releases.
   102      */
   103     BOOL (WINAPI *getFileAttributesExProc)(CONST TCHAR *, 
   104 	    GET_FILEEX_INFO_LEVELS, LPVOID);
   105     BOOL (WINAPI *createHardLinkProc)(CONST TCHAR*, CONST TCHAR*, 
   106 				      LPSECURITY_ATTRIBUTES);
   107     
   108     INT (__cdecl *utimeProc)(CONST TCHAR*, struct _utimbuf *);
   109     /* These two are also NULL at start; see comment above */
   110     HANDLE (WINAPI *findFirstFileExProc)(CONST TCHAR*, UINT,
   111 					 LPVOID, UINT,
   112 					 LPVOID, DWORD);
   113     BOOL (WINAPI *getVolumeNameForVMPProc)(CONST TCHAR*, TCHAR*, DWORD);
   114 
   115     DWORD (WINAPI *getLongPathNameProc)(CONST TCHAR*, TCHAR*, DWORD);
   116     /* 
   117      * These six are for the security sdk to get correct file
   118      * permissions on NT, 2000, XP, etc.  On 95,98,ME they are
   119      * always null.
   120      */
   121     BOOL (WINAPI *getFileSecurityProc)(LPCTSTR lpFileName,
   122 		     SECURITY_INFORMATION RequestedInformation,
   123 		     PSECURITY_DESCRIPTOR pSecurityDescriptor,
   124 		     DWORD nLength, 
   125 		     LPDWORD lpnLengthNeeded);
   126     BOOL (WINAPI *impersonateSelfProc) (SECURITY_IMPERSONATION_LEVEL 
   127 		      ImpersonationLevel);
   128     BOOL (WINAPI *openThreadTokenProc) (HANDLE ThreadHandle,
   129 		      DWORD DesiredAccess, BOOL OpenAsSelf,
   130 		      PHANDLE TokenHandle);
   131     BOOL (WINAPI *revertToSelfProc) (void);
   132     VOID (WINAPI *mapGenericMaskProc) (PDWORD AccessMask,
   133 		      PGENERIC_MAPPING GenericMapping);
   134     BOOL (WINAPI *accessCheckProc)(PSECURITY_DESCRIPTOR pSecurityDescriptor,
   135 		    HANDLE ClientToken, DWORD DesiredAccess,
   136 		    PGENERIC_MAPPING GenericMapping,
   137 		    PPRIVILEGE_SET PrivilegeSet,
   138 		    LPDWORD PrivilegeSetLength,
   139 		    LPDWORD GrantedAccess,
   140 		    LPBOOL AccessStatus);
   141    /*
   142     * Unicode console support. WriteConsole and ReadConsole
   143     */
   144     BOOL (WINAPI *readConsoleProc)(HANDLE hConsoleInput,
   145 	                           LPVOID lpBuffer,
   146 	                           DWORD nNumberOfCharsToRead,
   147 	                           LPDWORD lpNumberOfCharsRead,
   148 	                           LPVOID lpReserved);
   149     BOOL (WINAPI *writeConsoleProc)(HANDLE hConsoleOutput,
   150 				    const VOID* lpBuffer,
   151 				    DWORD nNumberOfCharsToWrite,
   152 				    LPDWORD lpNumberOfCharsWritten,
   153 				    LPVOID lpReserved);
   154 } TclWinProcs;
   155 
   156 EXTERN TclWinProcs *tclWinProcs;
   157 
   158 /*
   159  * Declarations of functions that are not accessible by way of the
   160  * stubs table.
   161  */
   162 
   163 EXTERN void		TclWinEncodingsCleanup();
   164 EXTERN void		TclWinResetInterfaceEncodings();
   165 EXTERN void		TclWinInit(HINSTANCE hInst);
   166 EXTERN int              TclWinSymLinkCopyDirectory(CONST TCHAR* LinkOriginal,
   167 						   CONST TCHAR* LinkCopy);
   168 EXTERN int              TclWinSymLinkDelete(CONST TCHAR* LinkOriginal, 
   169 					    int linkOnly);
   170 EXTERN char TclWinDriveLetterForVolMountPoint(CONST WCHAR *mountPoint);
   171 #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
   172 EXTERN void		TclWinFreeAllocCache(void);
   173 EXTERN void		TclFreeAllocCache(void *);
   174 EXTERN Tcl_Mutex	*TclpNewAllocMutex(void);
   175 EXTERN void		*TclpGetAllocCache(void);
   176 EXTERN void		TclpSetAllocCache(void *);
   177 #endif /* TCL_THREADS */
   178 
   179 /* Needed by tclWinFile.c and tclWinFCmd.c */
   180 #ifndef FILE_ATTRIBUTE_REPARSE_POINT
   181 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
   182 #endif
   183 
   184 #include "tclIntPlatDecls.h"
   185 
   186 # undef TCL_STORAGE_CLASS
   187 # define TCL_STORAGE_CLASS DLLIMPORT
   188 
   189 #endif	/* _TCLWININT */