# nt-base.h

Go to the documentation of this file.

    00001 /*
    00002   Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
    00003   dedicated to making software imaging solutions freely available.
    00004
    00005   You may not use this file except in compliance with the License.
    00006   obtain a copy of the License at
    00007
    00008     http://www.imagemagick.org/script/license.php
    00009
    00010   Unless required by applicable law or agreed to in writing, software
    00011   distributed under the License is distributed on an "AS IS" BASIS,
    00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00013   See the License for the specific language governing permissions and
    00014   limitations under the License.
    00015
    00016   MagickCore Windows NT utility methods.
    00017 */
    00018 #ifndef _MAGICKCORE_NT_BASE_H
    00019 #define _MAGICKCORE_NT_BASE_H
    00020
    00021 #if defined(__cplusplus) || defined(c_plusplus)
    00022 extern "C" {
    00023 #endif
    00024
    00025 #include "magick/delegate.h"
    00026 #include "magick/exception.h"
    00027
    00028 #define WIN32_LEAN_AND_MEAN
    00029 #define VC_EXTRALEAN
    00030 #define _CRT_SECURE_NO_DEPRECATE  1
    00031 #include <windows.h>
    00032 #include <wchar.h>
    00033 #include <winuser.h>
    00034 #include <wingdi.h>
    00035 #include <io.h>
    00036 #include <process.h>
    00037 #include <errno.h>
    00038 #if defined(_DEBUG) && !defined(__MINGW32__)
    00039 #include <crtdbg.h>
    00040 #endif
    00041
    00042 #define PROT_READ  0x01
    00043 #define PROT_WRITE  0x02
    00044 #define MAP_SHARED  0x01
    00045 #define MAP_PRIVATE  0x02
    00046 #define MAP_ANONYMOUS  0x20
    00047 #define F_OK 0
    00048 #define R_OK 4
    00049 #define W_OK 2
    00050 #define RW_OK 6
    00051 #define _SC_PAGESIZE 1
    00052 #define _SC_PHYS_PAGES 2
    00053 #define _SC_OPEN_MAX 3
    00054 #if !defined(SSIZE_MAX)
    00055 #define SSIZE_MAX  0x7fffffffL
    00056 #endif
    00057
    00058 #if !defined(chsize)
    00059 # if defined(__BORLANDC__)
    00060 #   define chsize(file,length)  chsize(file,length)
    00061 # else
    00062 #   define chsize(file,length)  _chsize(file,length)
    00063 # endif
    00064 #endif
    00065
    00066 #if !defined(access)
    00067 #  define access(path,mode)  _access(path,mode)
    00068 #endif
    00069 #if !defined(chdir)
    00070 #  define chdir  _chdir
    00071 #endif
    00072 #if !defined(close)
    00073 #  define close  _close
    00074 #endif
    00075 #if !defined(closedir)
    00076 #  define closedir(directory)  NTCloseDirectory(directory)
    00077 #endif
    00078 #if !defined(fdopen)
    00079 #  define fdopen  _fdopen
    00080 #endif
    00081 #if !defined(fileno)
    00082 #  define fileno  _fileno
    00083 #endif
    00084 #if !defined(ftruncate)
    00085 #  define ftruncate(file,length)  NTTruncateFile(file,length)
    00086 #endif
    00087 #if !defined(getcwd)
    00088 #  define getcwd  _getcwd
    00089 #endif
    00090 #if !defined(getpid)
    00091 #  define getpid  _getpid
    00092 #endif
    00093 #if !defined(hypot)
    00094 #  define hypot  _hypot
    00095 #endif
    00096 #if !defined(isatty)
    00097 #  define isatty _isatty
    00098 #endif
    00099 #if !defined(MAGICKCORE_LTDL_DELEGATE)
    00100 #if !defined(lt_dlclose)
    00101 #  define lt_dlclose(handle)  NTCloseLibrary(handle)
    00102 #endif
    00103 #if !defined(lt_dlerror)
    00104 #  define lt_dlerror()  NTGetLibraryError()
    00105 #endif
    00106 #if !defined(lt_dlexit)
    00107 #  define lt_dlexit()  NTExitLibrary()
    00108 #endif
    00109 #if !defined(lt_dlinit)
    00110 #  define lt_dlinit()  NTInitializeLibrary()
    00111 #endif
    00112 #if !defined(lt_dlopen)
    00113 #  define lt_dlopen(filename)  NTOpenLibrary(filename)
    00114 #endif
    00115 #if !defined(lt_dlsetsearchpath)
    00116 #  define lt_dlsetsearchpath(path)  NTSetSearchPath(path)
    00117 #endif
    00118 #if !defined(lt_dlsym)
    00119 #  define lt_dlsym(handle,name)  NTGetLibrarySymbol(handle,name)
    00120 #endif
    00121 #endif
    00122 #if !defined(mmap)
    00123 #  define mmap(address,length,protection,access,file,offset) \
    00124   NTMapMemory(address,length,protection,access,file,offset)
    00125 #endif
    00126 #if !defined(msync)
    00127 #  define msync(address,length,flags)  NTSyncMemory(address,length,flags)
    00128 #endif
    00129 #if !defined(munmap)
    00130 #  define munmap(address,length)  NTUnmapMemory(address,length)
    00131 #endif
    00132 #if !defined(opendir)
    00133 #  define opendir(directory)  NTOpenDirectory(directory)
    00134 #endif
    00135 #if !defined(open)
    00136 #  define open  _open
    00137 #endif
    00138 #if !defined(pclose)
    00139 #  define pclose  _pclose
    00140 #endif
    00141 #if !defined(popen)
    00142 #  define popen  _popen
    00143 #endif
    00144 #if !defined(read)
    00145 #  define read  _read
    00146 #endif
    00147 #if !defined(readdir)
    00148 #  define readdir(directory)  NTReadDirectory(directory)
    00149 #endif
    00150 #if !defined(seekdir)
    00151 #  define seekdir(directory,offset)  NTSeekDirectory(directory,offset)
    00152 #endif
    00153 #if !defined(setmode)
    00154 #  define setmode  _setmode
    00155 #endif
    00156 #if !defined(strcasecmp)
    00157 #  define strcasecmp  _strcmpi
    00158 #endif
    00159 #if !defined(strncasecmp)
    00160 #  define strncasecmp  _strnicmp
    00161 #endif
    00162 #if !defined(sysconf)
    00163 #  define sysconf(name)  NTSystemConfiguration(name)
    00164 #endif
    00165 #if !defined(telldir)
    00166 #  define telldir(directory)  NTTellDirectory(directory)
    00167 #endif
    00168 #if !defined(tempnam)
    00169 #  define tempnam  _tempnam
    00170 #endif
    00171 #if !defined(vsnprintf)
    00172 #  define vsnprintf  _vsnprintf
    00173 #endif
    00174 #if !defined(write)
    00175 #  define write  _write
    00176 #endif
    00177
    00178 #if defined(_MT) && defined(__WINDOWS__)
    00179 #  define SAFE_GLOBAL  __declspec(thread)
    00180 #else
    00181 #  define SAFE_GLOBAL
    00182 #endif
    00183
    00184 #if defined(__BORLANDC__)
    00185 #undef _O_RANDOM
    00186 #define _O_RANDOM 0
    00187 #undef _O_SEQUENTIAL
    00188 #define _O_SEQUENTIAL 0
    00189 #undef _O_SHORT_LIVED
    00190 #define _O_SHORT_LIVED 0
    00191 #undef _O_TEMPORARY
    00192 #define _O_TEMPORARY 0
    00193 #endif
    00194
    00195 #if !defined(XS_VERSION)
    00196 struct dirent
    00197 {
    00198   char
    00199     d_name[2048];
    00200
    00201   int
    00202     d_namlen;
    00203 };
    00204
    00205 typedef struct _DIR
    00206 {
    00207   HANDLE
    00208     hSearch;
    00209
    00210   WIN32_FIND_DATA
    00211     Win32FindData;
    00212
    00213   BOOL
    00214     firsttime;
    00215
    00216   struct dirent
    00217     file_info;
    00218 } DIR;
    00219
    00220 typedef struct _NTMEMORYSTATUSEX
    00221 {
    00222   DWORD
    00223     dwLength,
    00224     dwMemoryLoad;
    00225
    00226   DWORDLONG
    00227     ullTotalPhys,
    00228     ullAvailPhys,
    00229     ullTotalPageFile,
    00230     ullAvailPageFile,
    00231     ullTotalVirtual,
    00232     ullAvailVirtual,
    00233     ullAvailExtendedVirtual;
    00234 } NTMEMORYSTATUSEX;
    00235
    00236 typedef UINT
    00237   (CALLBACK *LPFNDLLFUNC1)(DWORD,UINT);
    00238
    00239 typedef UINT
    00240   (CALLBACK *LPFNDLLFUNC2)(NTMEMORYSTATUSEX *);
    00241
    00242 #endif
    00243
    00244 #if !defined(ssize_t) && !defined(__MINGW32__)
    00245 typedef long ssize_t;
    00246 #endif
    00247
    00248 extern MagickExport char
    00249   *NTGetLastError(void);
    00250
    00251 extern MagickExport const GhostscriptVectors
    00252   *NTGhostscriptDLLVectors(void);
    00253
    00254 #if !defined(MAGICKCORE_LTDL_DELEGATE)
    00255 extern MagickExport const char
    00256   *NTGetLibraryError(void);
    00257 #endif
    00258
    00259 #if !defined(XS_VERSION)
    00260 extern MagickExport char
    00261   *NTRegistryKeyLookup(const char *);
    00262
    00263 extern MagickExport const char
    00264   *NTGetLibraryError(void);
    00265
    00266 extern MagickExport DIR
    00267   *NTOpenDirectory(const char *);
    00268
    00269 extern MagickExport double
    00270   NTElapsedTime(void),
    00271   NTUserTime(void);
    00272
    00273 extern MagickExport int
    00274   Exit(int),
    00275   IsWindows95(),
    00276   NTCloseDirectory(DIR *),
    00277   NTCloseLibrary(void *),
    00278   NTControlHandler(void),
    00279   NTExitLibrary(void),
    00280   NTTruncateFile(int,off_t),
    00281   NTGhostscriptDLL(char *,int),
    00282   NTGhostscriptEXE(char *,int),
    00283   NTGhostscriptFonts(char *,int),
    00284   NTGhostscriptLoadDLL(void),
    00285   NTGhostscriptUnLoadDLL(void),
    00286   NTInitializeLibrary(void),
    00287   NTSetSearchPath(const char *),
    00288   NTSyncMemory(void *,size_t,int),
    00289   NTUnmapMemory(void *,size_t),
    00290   NTSystemCommand(const char *);
    00291
    00292 extern MagickExport long
    00293   NTSystemConfiguration(int),
    00294   NTTellDirectory(DIR *);
    00295
    00296 extern MagickExport MagickBooleanType
    00297   NTGetExecutionPath(char *,const size_t),
    00298   NTGetModulePath(const char *,char *),
    00299   NTReportEvent(const char *,const MagickBooleanType),
    00300   NTReportException(const char *,const MagickBooleanType);
    00301
    00302 extern MagickExport struct dirent
    00303   *NTReadDirectory(DIR *);
    00304
    00305 extern MagickExport unsigned char
    00306   *NTResourceToBlob(const char *);
    00307
    00308 extern MagickExport void
    00309   NTErrorHandler(const ExceptionType,const char *,const char *),
    00310   *NTGetLibrarySymbol(void *,const char *),
    00311   *NTMapMemory(char *,size_t,int,int,int,MagickOffsetType),
    00312   *NTOpenLibrary(const char *),
    00313   NTSeekDirectory(DIR *,long),
    00314   NTWarningHandler(const ExceptionType,const char *,const char *);
    00315
    00316 #endif /* !XS_VERSION */
    00317
    00318 #if defined(__cplusplus) || defined(c_plusplus)
    00319 }
    00320 #endif /* !C++ */
    00321
    00322 #endif /* !_MAGICKCORE_NT_BASE_H */