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.
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 0x2000
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.
42 #ifndef VER_PLATFORM_WIN32_WINDOWS
43 #define VER_PLATFORM_WIN32_WINDOWS 1
47 * The following structure keeps track of whether we are using the
48 * multi-byte or the wide-character interfaces to the operating system.
49 * System calls should be made through the following function table.
57 typedef struct TclWinProcs {
60 BOOL (WINAPI *buildCommDCBProc)(CONST TCHAR *, LPDCB);
61 TCHAR *(WINAPI *charLowerProc)(TCHAR *);
62 BOOL (WINAPI *copyFileProc)(CONST TCHAR *, CONST TCHAR *, BOOL);
63 BOOL (WINAPI *createDirectoryProc)(CONST TCHAR *, LPSECURITY_ATTRIBUTES);
64 HANDLE (WINAPI *createFileProc)(CONST TCHAR *, DWORD, DWORD,
65 LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
66 BOOL (WINAPI *createProcessProc)(CONST TCHAR *, TCHAR *,
67 LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD,
68 LPVOID, CONST TCHAR *, LPSTARTUPINFOA, LPPROCESS_INFORMATION);
69 BOOL (WINAPI *deleteFileProc)(CONST TCHAR *);
70 HANDLE (WINAPI *findFirstFileProc)(CONST TCHAR *, WIN32_FIND_DATAT *);
71 BOOL (WINAPI *findNextFileProc)(HANDLE, WIN32_FIND_DATAT *);
72 BOOL (WINAPI *getComputerNameProc)(WCHAR *, LPDWORD);
73 DWORD (WINAPI *getCurrentDirectoryProc)(DWORD, WCHAR *);
74 DWORD (WINAPI *getFileAttributesProc)(CONST TCHAR *);
75 DWORD (WINAPI *getFullPathNameProc)(CONST TCHAR *, DWORD nBufferLength,
77 DWORD (WINAPI *getModuleFileNameProc)(HMODULE, WCHAR *, int);
78 DWORD (WINAPI *getShortPathNameProc)(CONST TCHAR *, WCHAR *, DWORD);
79 UINT (WINAPI *getTempFileNameProc)(CONST TCHAR *, CONST TCHAR *, UINT,
81 DWORD (WINAPI *getTempPathProc)(DWORD, WCHAR *);
82 BOOL (WINAPI *getVolumeInformationProc)(CONST TCHAR *, WCHAR *, DWORD,
83 LPDWORD, LPDWORD, LPDWORD, WCHAR *, DWORD);
84 HINSTANCE (WINAPI *loadLibraryProc)(CONST TCHAR *);
85 TCHAR (WINAPI *lstrcpyProc)(WCHAR *, CONST TCHAR *);
86 BOOL (WINAPI *moveFileProc)(CONST TCHAR *, CONST TCHAR *);
87 BOOL (WINAPI *removeDirectoryProc)(CONST TCHAR *);
88 DWORD (WINAPI *searchPathProc)(CONST TCHAR *, CONST TCHAR *,
89 CONST TCHAR *, DWORD, WCHAR *, TCHAR **);
90 BOOL (WINAPI *setCurrentDirectoryProc)(CONST TCHAR *);
91 BOOL (WINAPI *setFileAttributesProc)(CONST TCHAR *, DWORD);
92 BOOL (WINAPI *getFileAttributesExProc)(CONST TCHAR *,
93 GET_FILEEX_INFO_LEVELS, LPVOID);
94 BOOL (WINAPI *createHardLinkProc)(CONST TCHAR*, CONST TCHAR*,
95 LPSECURITY_ATTRIBUTES);
98 EXTERN TclWinProcs *tclWinProcs;
101 * Declarations of functions that are not accessible by way of the
105 EXTERN void TclWinInit(HINSTANCE hInst);
106 EXTERN int TclWinSymLinkCopyDirectory(CONST TCHAR* LinkOriginal,
107 CONST TCHAR* LinkCopy);
108 EXTERN int TclWinSymLinkDelete(CONST TCHAR* LinkOriginal,
110 #if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
111 EXTERN void TclWinFreeAllocCache(void);
112 EXTERN void TclFreeAllocCache(void *);
113 EXTERN Tcl_Mutex *TclpNewAllocMutex(void);
114 EXTERN void *TclpGetAllocCache(void);
115 EXTERN void TclpSetAllocCache(void *);
116 #endif /* TCL_THREADS */
118 /* Needed by tclWinFile.c and tclWinFCmd.c */
119 #ifndef FILE_ATTRIBUTE_REPARSE_POINT
120 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
123 #include "tclIntPlatDecls.h"
125 # undef TCL_STORAGE_CLASS
126 # define TCL_STORAGE_CLASS DLLIMPORT
128 #endif /* _TCLWININT */