os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/win/tclWinInt.h
Update contrib.
4 * Declarations of Windows-specific shared variables and procedures.
6 * Copyright (c) 1994-1996 Sun Microsystems, Inc.
8 * See the file "license.terms" for information on usage and redistribution
9 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
11 * RCS: @(#) $Id: tclWinInt.h,v 1.20.2.5 2006/03/10 10:35:25 vincentdarley Exp $
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.
30 #define TCL_WIN_STACK_THRESHOLD 0x8000
33 # undef TCL_STORAGE_CLASS
34 # define TCL_STORAGE_CLASS DLLEXPORT
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.
43 #ifndef VER_PLATFORM_WIN32_WINDOWS
44 #define VER_PLATFORM_WIN32_WINDOWS 1
46 #ifndef VER_PLATFORM_WIN32_CE
47 #define VER_PLATFORM_WIN32_CE 3
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.
61 typedef struct TclWinProcs {
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,
81 DWORD (WINAPI *getModuleFileNameProc)(HMODULE, WCHAR *, int);
82 DWORD (WINAPI *getShortPathNameProc)(CONST TCHAR *, WCHAR *, DWORD);
83 UINT (WINAPI *getTempFileNameProc)(CONST TCHAR *, CONST TCHAR *, UINT,
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);
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.
103 BOOL (WINAPI *getFileAttributesExProc)(CONST TCHAR *,
104 GET_FILEEX_INFO_LEVELS, LPVOID);
105 BOOL (WINAPI *createHardLinkProc)(CONST TCHAR*, CONST TCHAR*,
106 LPSECURITY_ATTRIBUTES);
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,
113 BOOL (WINAPI *getVolumeNameForVMPProc)(CONST TCHAR*, TCHAR*, DWORD);
115 DWORD (WINAPI *getLongPathNameProc)(CONST TCHAR*, TCHAR*, DWORD);
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
121 BOOL (WINAPI *getFileSecurityProc)(LPCTSTR lpFileName,
122 SECURITY_INFORMATION RequestedInformation,
123 PSECURITY_DESCRIPTOR pSecurityDescriptor,
125 LPDWORD lpnLengthNeeded);
126 BOOL (WINAPI *impersonateSelfProc) (SECURITY_IMPERSONATION_LEVEL
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);
142 * Unicode console support. WriteConsole and ReadConsole
144 BOOL (WINAPI *readConsoleProc)(HANDLE hConsoleInput,
146 DWORD nNumberOfCharsToRead,
147 LPDWORD lpNumberOfCharsRead,
149 BOOL (WINAPI *writeConsoleProc)(HANDLE hConsoleOutput,
150 const VOID* lpBuffer,
151 DWORD nNumberOfCharsToWrite,
152 LPDWORD lpNumberOfCharsWritten,
156 EXTERN TclWinProcs *tclWinProcs;
159 * Declarations of functions that are not accessible by way of the
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,
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 */
179 /* Needed by tclWinFile.c and tclWinFCmd.c */
180 #ifndef FILE_ATTRIBUTE_REPARSE_POINT
181 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
184 #include "tclIntPlatDecls.h"
186 # undef TCL_STORAGE_CLASS
187 # define TCL_STORAGE_CLASS DLLIMPORT
189 #endif /* _TCLWININT */