1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/*
* tclWinInt.h --
*
* Declarations of Windows-specific shared variables and procedures.
*
* Copyright (c) 1994-1996 Sun Microsystems, Inc.
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* RCS: @(#) $Id: tclWinInt.h,v 1.14 2002/04/23 17:03:35 hobbs Exp $
*/
#ifndef _TCLWININT
#define _TCLWININT
#ifndef _TCLINT
#include "tclInt.h"
#endif
#ifndef _TCLPORT
#include "tclPort.h"
#endif
/*
* The following specifies how much stack space TclpCheckStackSpace()
* ensures is available. TclpCheckStackSpace() is called by Tcl_EvalObj()
* to help avoid overflowing the stack in the case of infinite recursion.
*/
#define TCL_WIN_STACK_THRESHOLD 0x2000
#ifdef BUILD_tcl
# undef TCL_STORAGE_CLASS
# define TCL_STORAGE_CLASS DLLEXPORT
#endif
/*
* Some versions of Borland C have a define for the OSVERSIONINFO for
* Win32s and for NT, but not for Windows 95.
*/
#ifndef VER_PLATFORM_WIN32_WINDOWS
#define VER_PLATFORM_WIN32_WINDOWS 1
#endif
/*
* The following structure keeps track of whether we are using the
* multi-byte or the wide-character interfaces to the operating system.
* System calls should be made through the following function table.
*/
typedef union {
WIN32_FIND_DATAA a;
WIN32_FIND_DATAW w;
} WIN32_FIND_DATAT;
typedef struct TclWinProcs {
int useWide;
BOOL (WINAPI *buildCommDCBProc)(CONST TCHAR *, LPDCB);
TCHAR *(WINAPI *charLowerProc)(TCHAR *);
BOOL (WINAPI *copyFileProc)(CONST TCHAR *, CONST TCHAR *, BOOL);
BOOL (WINAPI *createDirectoryProc)(CONST TCHAR *, LPSECURITY_ATTRIBUTES);
HANDLE (WINAPI *createFileProc)(CONST TCHAR *, DWORD, DWORD,
LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
BOOL (WINAPI *createProcessProc)(CONST TCHAR *, TCHAR *,
LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD,
LPVOID, CONST TCHAR *, LPSTARTUPINFOA, LPPROCESS_INFORMATION);
BOOL (WINAPI *deleteFileProc)(CONST TCHAR *);
HANDLE (WINAPI *findFirstFileProc)(CONST TCHAR *, WIN32_FIND_DATAT *);
BOOL (WINAPI *findNextFileProc)(HANDLE, WIN32_FIND_DATAT *);
BOOL (WINAPI *getComputerNameProc)(WCHAR *, LPDWORD);
DWORD (WINAPI *getCurrentDirectoryProc)(DWORD, WCHAR *);
DWORD (WINAPI *getFileAttributesProc)(CONST TCHAR *);
DWORD (WINAPI *getFullPathNameProc)(CONST TCHAR *, DWORD nBufferLength,
WCHAR *, TCHAR **);
DWORD (WINAPI *getModuleFileNameProc)(HMODULE, WCHAR *, int);
DWORD (WINAPI *getShortPathNameProc)(CONST TCHAR *, WCHAR *, DWORD);
UINT (WINAPI *getTempFileNameProc)(CONST TCHAR *, CONST TCHAR *, UINT,
WCHAR *);
DWORD (WINAPI *getTempPathProc)(DWORD, WCHAR *);
BOOL (WINAPI *getVolumeInformationProc)(CONST TCHAR *, WCHAR *, DWORD,
LPDWORD, LPDWORD, LPDWORD, WCHAR *, DWORD);
HINSTANCE (WINAPI *loadLibraryProc)(CONST TCHAR *);
TCHAR (WINAPI *lstrcpyProc)(WCHAR *, CONST TCHAR *);
BOOL (WINAPI *moveFileProc)(CONST TCHAR *, CONST TCHAR *);
BOOL (WINAPI *removeDirectoryProc)(CONST TCHAR *);
DWORD (WINAPI *searchPathProc)(CONST TCHAR *, CONST TCHAR *,
CONST TCHAR *, DWORD, WCHAR *, TCHAR **);
BOOL (WINAPI *setCurrentDirectoryProc)(CONST TCHAR *);
BOOL (WINAPI *setFileAttributesProc)(CONST TCHAR *, DWORD);
BOOL (WINAPI *getFileAttributesExProc)(CONST TCHAR *,
GET_FILEEX_INFO_LEVELS, LPVOID);
} TclWinProcs;
EXTERN TclWinProcs *tclWinProcs;
/*
* Declarations of functions that are not accessible by way of the
* stubs table.
*/
EXTERN void TclWinInit(HINSTANCE hInst);
#if defined(TCL_THREADS) && defined(USE_THREAD_ALLOC)
EXTERN void TclWinFreeAllocCache(void);
EXTERN void TclFreeAllocCache(void *);
EXTERN Tcl_Mutex *TclpNewAllocMutex(void);
EXTERN void *TclpGetAllocCache(void);
EXTERN void TclpSetAllocCache(void *);
#endif /* TCL_THREADS */
#include "tclIntPlatDecls.h"
# undef TCL_STORAGE_CLASS
# define TCL_STORAGE_CLASS DLLIMPORT
#endif /* _TCLWININT */
|