summaryrefslogtreecommitdiffstats
path: root/win/tclWinInt.h
diff options
context:
space:
mode:
Diffstat (limited to 'win/tclWinInt.h')
-rw-r--r--win/tclWinInt.h105
1 files changed, 18 insertions, 87 deletions
diff --git a/win/tclWinInt.h b/win/tclWinInt.h
index c75084a..9df424f 100644
--- a/win/tclWinInt.h
+++ b/win/tclWinInt.h
@@ -14,6 +14,23 @@
#include "tclInt.h"
+#ifdef HAVE_NO_SEH
+/*
+ * Unlike Borland and Microsoft, we don't register exception handlers by
+ * pushing registration records onto the runtime stack. Instead, we register
+ * them by creating an TCLEXCEPTION_REGISTRATION within the activation record.
+ */
+
+typedef struct TCLEXCEPTION_REGISTRATION {
+ struct TCLEXCEPTION_REGISTRATION *link;
+ EXCEPTION_DISPOSITION (*handler)(
+ struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
+ void *ebp;
+ void *esp;
+ int status;
+} TCLEXCEPTION_REGISTRATION;
+#endif
+
/*
* Some versions of Borland C have a define for the OSVERSIONINFO for
* Win32s and for NT, but not for Windows 95.
@@ -34,92 +51,6 @@
#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 *, LPSTARTUPINFO, 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)(TCHAR *, LPDWORD);
- DWORD (WINAPI *getCurrentDirectoryProc)(DWORD, TCHAR *);
- DWORD (WINAPI *getFileAttributesProc)(const TCHAR *);
- DWORD (WINAPI *getFullPathNameProc)(const TCHAR *, DWORD, TCHAR *,
- TCHAR **);
- DWORD (WINAPI *getShortPathNameProc)(const TCHAR *, TCHAR *, DWORD);
- UINT (WINAPI *getTempFileNameProc)(const TCHAR *, const TCHAR *, UINT,
- TCHAR *);
- DWORD (WINAPI *getTempPathProc)(DWORD, TCHAR *);
- BOOL (WINAPI *getVolumeInformationProc)(const TCHAR *, TCHAR *, DWORD,
- LPDWORD, LPDWORD, LPDWORD, TCHAR *, DWORD);
- HINSTANCE (WINAPI *loadLibraryExProc)(const TCHAR *, HANDLE, DWORD);
- BOOL (WINAPI *moveFileProc)(const TCHAR *, const TCHAR *);
- BOOL (WINAPI *removeDirectoryProc)(const TCHAR *);
- DWORD (WINAPI *searchPathProc)(const TCHAR *, const TCHAR *,
- const TCHAR *, DWORD, TCHAR *, TCHAR **);
- BOOL (WINAPI *setCurrentDirectoryProc)(const TCHAR *);
- BOOL (WINAPI *setFileAttributesProc)(const TCHAR *, DWORD);
- /*
- * These two function pointers will only be set when
- * Tcl_FindExecutable is called. If you don't ever call that
- * function, the application will crash whenever WinTcl tries to call
- * functions through these null pointers. That is not a bug in Tcl
- * -- Tcl_FindExecutable is obligatory in recent Tcl releases.
- */
- BOOL (WINAPI *getFileAttributesExProc)(const TCHAR *,
- GET_FILEEX_INFO_LEVELS, LPVOID);
- BOOL (WINAPI *createHardLinkProc)(const TCHAR *, const TCHAR *,
- LPSECURITY_ATTRIBUTES);
-
- /* These two are also NULL at start; see comment above */
- HANDLE (WINAPI *findFirstFileExProc)(const TCHAR *, UINT,
- LPVOID, UINT, LPVOID, DWORD);
- BOOL (WINAPI *getVolumeNameForVMPProc)(const TCHAR *, TCHAR *, DWORD);
- DWORD (WINAPI *getLongPathNameProc)(const TCHAR *, TCHAR *, DWORD);
- /*
- * These six are for the security sdk to get correct file
- * permissions on NT, 2000, XP, etc. On 95,98,ME they are
- * always null.
- */
- BOOL (WINAPI *getFileSecurityProc)(LPCTSTR, SECURITY_INFORMATION,
- PSECURITY_DESCRIPTOR, DWORD, LPDWORD);
- BOOL (WINAPI *impersonateSelfProc) (SECURITY_IMPERSONATION_LEVEL);
- BOOL (WINAPI *openThreadTokenProc) (HANDLE, DWORD, BOOL, PHANDLE);
- BOOL (WINAPI *revertToSelfProc) (void);
- void (WINAPI *mapGenericMaskProc) (PDWORD, PGENERIC_MAPPING);
- BOOL (WINAPI *accessCheckProc)(PSECURITY_DESCRIPTOR, HANDLE, DWORD,
- PGENERIC_MAPPING, PPRIVILEGE_SET, LPDWORD, LPDWORD, LPBOOL);
- /*
- * Unicode console support. WriteConsole and ReadConsole
- */
- BOOL (WINAPI *readConsoleProc)(HANDLE, LPVOID, DWORD, LPDWORD, LPVOID);
- BOOL (WINAPI *writeConsoleProc)(HANDLE, const void *, DWORD, LPDWORD,
- LPVOID);
- BOOL (WINAPI *getUserName)(LPTSTR, LPDWORD);
- const TCHAR *(*utf2tchar)(const char *, int, Tcl_DString *);
- const char *(*tchar2utf)(const TCHAR *, int, Tcl_DString *);
-} TclWinProcs;
-
-MODULE_SCOPE const TclWinProcs *const tclWinProcs;
-
-/*
* Declarations of functions that are not accessible by way of the
* stubs table.
*/
@@ -135,7 +66,7 @@ MODULE_SCOPE Tcl_Channel TclWinOpenFileChannel(HANDLE handle, char *channelName,
int permissions, int appendMode);
MODULE_SCOPE Tcl_Channel TclWinOpenSerialChannel(HANDLE handle,
char *channelName, int permissions);
-MODULE_SCOPE HANDLE TclWinSerialReopen(HANDLE handle, const TCHAR *name,
+MODULE_SCOPE HANDLE TclWinSerialOpen(HANDLE handle, const TCHAR *name,
DWORD access);
MODULE_SCOPE int TclWinSymLinkCopyDirectory(const TCHAR *LinkOriginal,
const TCHAR *LinkCopy);