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