Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/tcl8.5.2/win/tclWinInt.h @ 25

Last change on this file since 25 was 25, checked in by landauf, 16 years ago

added tcl to libs

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