3 #ifndef ACE_CONFIG_WIN32_COMMON_H
4 #define ACE_CONFIG_WIN32_COMMON_H
5 #include /**/ "ace/pre.h"
7 #ifndef ACE_CONFIG_WIN32_H
8 #error Use config-win32.h in config.h instead of this header
9 #endif /* ACE_CONFIG_WIN32_H */
11 #if defined(__MINGW32__)
12 // When using the --std=c++0x option with MinGW the compiler omits defining
13 // the following required macros (at least with the GCC 4.6.2 version)
14 // So we define them ourselves here.
16 # define _stdcall __attribute__((__stdcall__))
17 # define _cdecl __attribute__((__cdecl__))
18 # define _thiscall __attribute__((__thiscall__))
19 # define _fastcall __attribute__((__fastcall__))
26 // Complain if WIN32 is not already defined.
28 # error Please define WIN32 in your project settings.
32 #if defined (_WIN64) || defined (WIN64)
35 // MPC template adds _AMD64_ but user projects not generated using MPC
36 // may want to use _AMD64_ as well. Ensure it's there in all non ARM cases
37 # if !defined (_AMD64_) && !defined(_ARM_) && !defined(_ARM64_)
41 // Use 64-bit file offsets by default in the WIN64 case, similar to
42 // what 64-bit UNIX systems do.
44 // Note that _FILE_OFFSET_BITS is not recognized by Windows. It is,
45 // however, recognized by ACE.
46 # ifndef _FILE_OFFSET_BITS
47 # define _FILE_OFFSET_BITS 64
48 # endif /* !_FILE_OFFSET_BITS */
49 #endif /* _WIN64 || WIN64 */
51 // If the invoking procedure turned off debugging by setting NDEBUG, then
52 // also set ACE_NDEBUG, unless the user has already set it.
54 # if !defined (ACE_NDEBUG)
56 # endif /* ACE_NDEBUG */
59 // Define ACE_HAS_MFC to 1, if you want ACE to use CWinThread. This should
60 // be defined, if your application uses MFC.
61 // Setting applies to : building ACE
62 // Runtime restrictions: MFC DLLs must be installed
63 // Additional notes : If both ACE_HAS_MFC and ACE_MT_SAFE are
64 // defined, the MFC DLL (not the static lib)
65 // will be used from ACE.
66 #if !defined (ACE_HAS_MFC)
67 # define ACE_HAS_MFC 0
70 // ACE_USES_STATIC_MFC always implies ACE_HAS_MFC
71 #if defined (ACE_USES_STATIC_MFC)
72 # if defined (ACE_HAS_MFC)
75 # define ACE_HAS_MFC 1
76 #endif /* ACE_USES_STATIC_MFC */
78 // Define ACE_HAS_STRICT to 1 in your config.h file if you want to use
79 // STRICT type checking. It is disabled by default because it will
80 // break existing application code. However, if ACE_HAS_MFC is turned on,
81 // ACE_HAS_STRICT is required by MFC.
82 // Setting applies to : building ACE, linking with ACE
83 // Runtime restrictions: -
84 #if !defined (ACE_HAS_STRICT)
85 # define ACE_HAS_STRICT 0
88 // MFC itself defines STRICT.
89 #if defined (ACE_HAS_MFC) && (ACE_HAS_MFC != 0)
90 # undef ACE_HAS_STRICT
91 # define ACE_HAS_STRICT 1
94 // Turn off the following define if you want to disable threading.
95 // Compile using multi-thread libraries.
96 // Setting applies to : building ACE, linking with ACE
97 // Runtime restrictions: multithreaded runtime DLL must be installed
98 #if !defined (ACE_MT_SAFE)
99 # define ACE_MT_SAFE 1
102 #if defined (ABOVE_NORMAL_PRIORITY_CLASS) && \
103 defined (BELOW_NORMAL_PRIORITY_CLASS) && \
104 defined (HIGH_PRIORITY_CLASS) && \
105 defined (IDLE_PRIORITY_CLASS) && \
106 defined (NORMAL_PRIORITY_CLASS) && \
107 defined (REALTIME_PRIORITY_CLASS)
108 #define ACE_HAS_WIN32_PRIORITY_CLASS
111 // Build ACE services as DLLs. If you write a library and want it to
112 // use ACE_Svc_Export, this will cause those macros to build dlls. If
113 // you want your ACE service to be a static library, comment out this
114 // line. As far as I know, the only reason to have a library be an
115 // ACE "service" is to leverage the ACE_Svc_Export macros. It's just
116 // as easy to define your own export macros.
117 // #if !defined (ACE_SVC_HAS_DLL)
118 // # define ACE_SVC_HAS_DLL 1
121 // Define the special export macros needed to export symbols outside a dll
122 #if !defined (ACE_HAS_CUSTOM_EXPORT_MACROS) || (ACE_HAS_CUSTOM_EXPORT_MACROS == 0)
123 #if defined (ACE_HAS_CUSTOM_EXPORT_MACROS)
124 #undef ACE_HAS_CUSTOM_EXPORT_MACROS
126 #define ACE_HAS_CUSTOM_EXPORT_MACROS 1
127 #define ACE_Proper_Export_Flag __declspec (dllexport)
128 #define ACE_Proper_Import_Flag __declspec (dllimport)
129 #define ACE_EXPORT_SINGLETON_DECLARATION(T) template class __declspec (dllexport) T
130 #define ACE_EXPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) template class __declspec (dllexport) SINGLETON_TYPE<CLASS, LOCK>;
131 #define ACE_IMPORT_SINGLETON_DECLARATION(T) extern template class T
132 #define ACE_IMPORT_SINGLETON_DECLARE(SINGLETON_TYPE, CLASS, LOCK) extern template class SINGLETON_TYPE <CLASS, LOCK>;
133 #endif /* !ACE_HAS_CUSTOM_EXPORT_MACROS || ACE_HAS_CUSTOM_EXPORT_MACROS==0 */
135 // Define ACE_HAS_WINSOCK2 to 0 in your config.h file if you do *not*
136 // want to compile with WinSock 2.0.
137 // Setting applies to : building ACE
138 // Runtime restrictions: winsock2 must be installed.
139 // #define ACE_HAS_WINSOCK2 0
141 // By default, we use non-static object manager on Win32. That is,
142 // the object manager is allocated in main's stack memory. If this
143 // does not suit your need, i.e., if your programs depend on the use
144 // of static object manager, you need to disable the behavior by adding
146 // #undef ACE_HAS_NONSTATIC_OBJECT_MANAGER
148 // in the config.h after including config-win32.h
150 // MFC users: the main function is defined within a MFC library and
151 // therefore, ACE won't be able to meddle with main function and
152 // instantiate the non-static object manager for you. To solve the
153 // problem, you'll need to instantiate the ACE_Object_Manager by
156 // 1. Using static object manager (as described above), however, using
157 // the non-static object manager is preferred, therefore,
158 // 2. Instantiate the non-static object manager yourself by either 1)
159 // call ACE::init () at the beginning and ACE::fini () at the end,
160 // _or_ 2) instantiate the ACE_Object_Manager in your CWinApp
163 // Optionally, you can #define
164 // ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER in your
165 // ace/config.h and always take care of the business by yourself.
166 // ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER has no effect when
167 // using static object managers.
168 #if !defined (ACE_HAS_NONSTATIC_OBJECT_MANAGER)
169 # define ACE_HAS_NONSTATIC_OBJECT_MANAGER
170 #endif /* ACE_HAS_NONSTATIC_OBJECT_MANAGER */
172 #define ACE_HAS_GPERF
174 // ---------------- platform features or lack of them -------------
176 // By default WIN32 has FD_SETSIZE of 64, which places the limit
177 // between 61 and 64 on the number of clients a server using the
178 // Select Reactor can support at the same time (i.e., 64 - standard in,
179 // out, error). Here we raise the limit to 1024. Adjust the definition
180 // below if you need to raise or lower it.
182 #if !defined (FD_SETSIZE)
183 #define FD_SETSIZE 1024
184 #endif /* FD_SETSIZE */
187 // Windows doesn't like 65536 ;-) If 65536 is specified, it is
188 // silently ignored by the OS, i.e., setsockopt does not fail, and you
189 // get stuck with the default size of 8k.
190 #define ACE_DEFAULT_MAX_SOCKET_BUFSIZ 65535
192 // It seems like Win32 does not have a limit on the number of buffers
193 // that can be transferred by the scatter/gather type of I/O
194 // functions, e.g., WSASend and WSARecv. We are setting this to be 64
195 // for now. The typically use case is to create an I/O vector array
196 // of size ACE_IOV_MAX on the stack and then filled in. Note that we
197 // probably don't want too big a value for ACE_IOV_MAX since it may
198 // mostly go to waste or the size of the activation record may become
199 // excessively large.
200 #if !defined (ACE_IOV_MAX)
201 # define ACE_IOV_MAX 64
202 #endif /* ACE_IOV_MAX */
204 // Platform supports pread() and pwrite()
207 #define ACE_HAS_P_READ_WRITE
209 #define ACE_HAS_DIRECT_H
210 #define ACE_HAS_PROCESS_H
213 #define ACE_DEFAULT_THREAD_PRIORITY 0
215 #define ACE_HAS_DIRENT
217 #define ACE_HAS_NONCONST_INET_NTOP
218 #define ACE_HAS_RECURSIVE_MUTEXES
219 #define ACE_HAS_SOCKADDR_MSG_NAME
220 #define ACE_HAS_THREAD_SAFE_ACCEPT
222 /* MS is phasing out the GetVersion API so let's prepare */
223 /* For now all releases still provide it. */
224 #define ACE_HAS_WIN32_GETVERSION
226 /* LACKS dir-related facilities */
227 #define ACE_LACKS_REWINDDIR
228 #define ACE_LACKS_SEEKDIR
229 #define ACE_LACKS_TELLDIR
231 #define ACE_LACKS_CLOCKID_T
232 #define ACE_LACKS_CLOCK_REALTIME
233 #define ACE_LACKS_CLOCK_MONOTONIC
234 #define ACE_HAS_MONOTONIC_TIME_POLICY
235 #define ACE_HAS_MONOTONIC_CONDITIONS
237 /* LACKS gid/pid/sid/uid facilities */
238 #define ACE_LACKS_GETPGID
239 #define ACE_LACKS_GETPPID
240 #define ACE_LACKS_SETPGID
241 #define ACE_LACKS_SETREGID
242 #define ACE_LACKS_SETREUID
243 #define ACE_LACKS_SETSID
244 #define ACE_LACKS_SETEGID
245 #define ACE_LACKS_SETUID
246 #define ACE_LACKS_SETEUID
247 #define ACE_LACKS_GETGID
248 #define ACE_LACKS_GETEGID
249 #define ACE_LACKS_GETUID
250 #define ACE_LACKS_GETEUID
251 #define ACE_LACKS_SETGID
253 /* LACKS miscellaneous */
254 #define ACE_LACKS_ALARM
255 #define ACE_LACKS_ARPA_INET_H
256 #define ACE_LACKS_DUP2
257 #define ACE_LACKS_FORK
258 #define ACE_LACKS_GETHOSTENT
259 #define ACE_LACKS_GETOPT
260 #define ACE_LACKS_GETIPNODEBYNAME_IPV6
261 #define ACE_LACKS_KILL
262 #define ACE_LACKS_INET_ATON
263 #define ACE_LACKS_MADVISE
264 #define ACE_LACKS_MKFIFO
265 #define ACE_LACKS_MODE_MASKS
266 #define ACE_LACKS_MSGHDR
267 #define ACE_LACKS_PTHREAD_H
268 #define ACE_LACKS_PWD_FUNCTIONS
269 #define ACE_LACKS_RAND_R
270 #define ACE_LACKS_READLINK
271 #define ACE_LACKS_RLIMIT
272 #define ACE_LACKS_SBRK
273 #define ACE_LACKS_SCHED_H
274 #define ACE_LACKS_SEMBUF_T
275 #define ACE_LACKS_SIGACTION
276 #define ACE_LACKS_SIGSET
277 #define ACE_LACKS_SIGSET_T
278 #define ACE_LACKS_SOCKETPAIR
279 #define ACE_LACKS_SUSECONDS_T
280 #define ACE_LACKS_USECONDS_T
281 #define ACE_LACKS_SYS_PARAM_H
282 #define ACE_LACKS_SYS_SYSCTL_H
283 #define ACE_LACKS_SYSCONF
284 #define ACE_LACKS_SYSV_SHMEM
285 #define ACE_LACKS_UNISTD_H
286 #define ACE_LACKS_UNIX_SIGNALS
287 #define ACE_LACKS_UNIX_SYSLOG
288 #define ACE_LACKS_UTSNAME_T
289 #define ACE_LACKS_UNAME
290 #define ACE_LACKS_WAIT
291 #define ACE_LACKS_IOVEC
292 #define ACE_LACKS_LOG2
293 #define ACE_LACKS_CADDR_T
294 #define ACE_LACKS_SETENV
295 #define ACE_LACKS_UNSETENV
297 #define ACE_HAS_PDH_H
298 #define ACE_HAS_PDHMSG_H
300 #define ACE_HAS_VFWPRINTF
302 #define ACE_MKDIR_LACKS_MODE
304 #define ACE_SIZEOF_LONG_LONG 8
306 // Optimize ACE_Handle_Set for select().
307 #define ACE_HAS_HANDLE_SET_OPTIMIZED_FOR_SELECT
309 // Win32 has wide-char support. Use of the compiler-defined wchar_t type
310 // is controlled in compiler configs since it's a compiler switch.
311 #define ACE_HAS_WCHAR
315 // Platform supports the rusage struct.
316 #define ACE_HAS_GETRUSAGE
318 // Platform provides ACE_TLI function prototypes.
319 // For Win32, this is not really true, but saves a lot of hassle!
320 #define ACE_HAS_TLI_PROTOTYPES
322 // I'm pretty sure NT lacks these
323 #define ACE_LACKS_UNIX_DOMAIN_SOCKETS
325 // Windows NT needs readv() and writev()
326 #define ACE_LACKS_WRITEV
327 #define ACE_LACKS_READV
329 #if !defined (ACE_HAS_WTHREADS_CONDITION_VARIABLE)
330 # define ACE_LACKS_COND_T
333 #define ACE_LACKS_RWLOCK_T
335 #define ACE_LACKS_KEY_T
337 // No system support for replacing any previous mappings.
338 #define ACE_LACKS_AUTO_MMAP_REPLACEMENT
340 // ACE_HAS_PENTIUM is used to optimize some CDR operations; it's used for
341 // some other time-related things using g++, but not for VC. Current VC
342 // compilers set _M_IX86 > 400 by default so if you're not using a Pentium
343 // class CPU, set the project code generation options appropriately.
344 #if !defined(ACE_HAS_PENTIUM) && (_M_IX86 > 400)
345 # define ACE_HAS_PENTIUM
348 #if defined(ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
349 // Platform supports threads.
350 # define ACE_HAS_THREADS
352 // Platform supports Windows32 threads.
353 # define ACE_HAS_WTHREADS
355 // Compiler/platform has thread-specific storage
356 # define ACE_HAS_THREAD_SPECIFIC_STORAGE
358 // Win32 doesn't have fcntl
359 #define ACE_LACKS_FCNTL
361 #endif /* ACE_MT_SAFE && ACE_MT_SAFE != 0 */
364 // If we are making a release, and the user has not specified
365 // inline directives, we will default to inline
366 # if ! defined (__ACE_INLINE__)
367 # define __ACE_INLINE__ 1
368 # endif /* __ACE_INLINE__ */
371 // If __ACE_INLINE__ is defined to be 0, we will undefine it
372 #if defined (__ACE_INLINE__) && (__ACE_INLINE__ == 0)
373 # undef __ACE_INLINE__
374 #endif /* __ACE_INLINE__ */
376 // We are build ACE and want to use MFC (multithreaded)
377 #if defined(ACE_HAS_MFC) && (ACE_HAS_MFC != 0) && defined (_MT)
378 # if (ACE_HAS_DLL != 0) && defined(ACE_BUILD_DLL) && !defined (_WINDLL)
379 // force multithreaded MFC DLL
381 # endif /* _AFXDLL */
382 # if !defined (_AFXDLL) && !defined (ACE_USES_STATIC_MFC)
384 # endif /* _AFXDLL */
387 // <windows.h> and MFC's <afxwin.h> are mutually
388 // incompatible. <windows.h> is brain-dead about MFC; it doesn't check
389 // to see whether MFC stuff is anticipated or already in progress
390 // before doing its thing. ACE needs (practically always) <winsock.h>,
391 // and winsock in turn needs support either from windows.h or from
392 // afxwin.h. One or the other, not both.
394 // The MSVC++ V4.0 environment defines preprocessor macros that
395 // indicate the programmer has chosen something from the
396 // Build-->Settings-->General-->MFC combo-box. <afxwin.h> defines a
397 // macro itself to protect against double inclusion. We'll take
398 // advantage of all this to select the proper support for winsock. -
401 // This is necessary since MFC users apparently can't #include
402 // <windows.h> directly.
403 #if defined (ACE_HAS_MFC) && (ACE_HAS_MFC != 0)
404 # include /**/ <afxwin.h> /* He is doing MFC */
405 // Windows.h will be included via afxwin.h->afx.h->afx_ver_.h->afxv_w32.h
406 // #define _INC_WINDOWS // Prevent winsock.h from including windows.h
409 #if !defined (_INC_WINDOWS) /* Already include windows.h ? */
410 // Must define strict before including windows.h !
411 # if defined (ACE_HAS_STRICT) && (ACE_HAS_STRICT != 0) && !defined (STRICT)
413 # endif /* ACE_HAS_STRICT */
415 # if !defined (WIN32_LEAN_AND_MEAN) && !defined (ACE_NO_WIN32_LEAN_AND_MEAN)
416 # define WIN32_LEAN_AND_MEAN
417 # endif /* WIN32_LEAN_AND_MEAN */
419 #endif /* !defined (_INC_WINDOWS) */
421 // Always use WS2 when available
422 #if !defined(ACE_HAS_WINSOCK2)
423 # define ACE_HAS_WINSOCK2 1
424 #endif /* !defined(ACE_HAS_WINSOCK2) */
425 // Not use WS1 by default
426 #if !defined(ACE_HAS_WINSOCK1)
427 # define ACE_HAS_WINSOCK1 0
428 #endif /* !defined(ACE_HAS_WINSOCK1) */
431 #if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
432 # define ACE_HAS_ICMP_SUPPORT 1
433 # if !defined (_WINSOCK2API_)
434 // will also include windows.h, if not present
435 # include /**/ <winsock2.h>
436 # endif /* _WINSOCK2API */
438 # if defined (ACE_HAS_FORE_ATM_WS2)
439 # include /**/ <ws2atm.h>
440 # endif /*ACE_HAS_FORE_ATM_WS2 */
442 # if !defined _MSWSOCK_
443 # include /**/ <mswsock.h>
444 # endif /* _MSWSOCK_ */
446 # if defined (_MSC_VER)
447 # pragma comment(lib, "ws2_32.lib")
448 # pragma comment(lib, "mswsock.lib")
449 # if defined (ACE_HAS_IPV6)
450 # pragma comment(lib, "iphlpapi.lib")
452 # endif /* _MSC_VER */
454 # define ACE_WSOCK_VERSION 2, 0
456 # if !defined (_WINSOCKAPI_)
457 // will also include windows.h, if not present
458 # include /**/ <winsock.h>
459 # endif /* _WINSOCKAPI */
461 // PharLap ETS has its own winsock lib, so don't grab the one
462 // supplied with the OS.
463 # if defined (_MSC_VER)
464 # pragma comment(lib, "wsock32.lib")
465 # endif /* _MSC_VER */
467 // We can't use recvmsg and sendmsg unless WinSock 2 is available
468 # define ACE_LACKS_RECVMSG
469 # define ACE_LACKS_SENDMSG
471 // Version 1.1 of WinSock
472 # define ACE_WSOCK_VERSION 1, 1
473 #endif /* ACE_HAS_WINSOCK2 */
475 #if _WIN32_WINNT >= 0x400
476 # define ACE_HAS_WIN32_TRYLOCK
478 #if _WIN32_WINNT < 0x600
479 # define ACE_LACKS_INET_NTOP
480 # define ACE_LACKS_INET_PTON
481 # define ACE_LACKS_IF_NAMETOINDEX
483 #define ACE_LACKS_IF_NAMEINDEX
484 #define ACE_LACKS_STRUCT_IF_NAMEINDEX
486 // Platform supports IP multicast on Winsock 2
487 #if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
488 # define ACE_HAS_IP_MULTICAST
489 #endif /* ACE_HAS_WINSOCK2 */
491 #define ACE_HAS_INTERLOCKED_EXCHANGEADD
493 #if _WIN32_WINNT >= 0x400
494 # define ACE_HAS_SIGNAL_OBJECT_AND_WAIT
497 // If CancelIO is undefined get the updated sp2-sdk from MS
498 #define ACE_HAS_CANCEL_IO
499 #define ACE_HAS_WIN32_OVERLAPPED_IO
500 #define ACE_HAS_WIN32_NAMED_PIPES
502 #if !defined (ACE_SEH_DEFAULT_EXCEPTION_HANDLING_ACTION)
503 # define ACE_SEH_DEFAULT_EXCEPTION_HANDLING_ACTION EXCEPTION_CONTINUE_SEARCH
504 #endif /* ACE_SEH_DEFAULT_EXCEPTION_HANDLING_ACTION */
506 // ACE_HAS_QOS is defined in the qos.mpb base project.
507 // If qos=1 in default.features, then this macro will be defined.
508 #if defined (ACE_HAS_QOS) && !defined (ACE_HAS_WINSOCK2_GQOS)
509 # if defined (WINSOCK_VERSION)
510 # define ACE_HAS_WINSOCK2_GQOS 1
511 # endif /* WINSOCK_VERSION */
512 #endif /* ACE_HAS_WINSOCK2_GQOS */
514 // These are the defaults and can be overridden by a user's config.h
515 #if !defined (ACE_DEFAULT_FILE_PERMS)
516 # define ACE_DEFAULT_FILE_PERMS (FILE_SHARE_READ | FILE_SHARE_WRITE | \
518 // This alternate used to be used for pre-NT4 systems; may still be needed
519 // by knock-offs such as CE and Pharlap.
520 //# define ACE_DEFAULT_FILE_PERMS (FILE_SHARE_READ | FILE_SHARE_WRITE)
521 #endif /* !defined (ACE_DEFAULT_FILE_PERMS) */
523 #define ACE_SIZEOF_WCHAR 2
524 #define ACE_HAS_MUTEX_TIMEOUTS
525 #define ACE_LACKS_ALPHASORT
526 #define ACE_LACKS_MKSTEMP
527 #define ACE_LACKS_LSTAT
528 // Looks like Win32 has a non-const swab function, and it takes the
529 // non-standard int len (rather than ssize_t).
530 #define ACE_HAS_NONCONST_SWAB
531 #define ACE_HAS_INT_SWAB
533 #if defined (ACE_WIN64)
534 // Data must be aligned on 8-byte boundaries, at a minimum.
535 # define ACE_MALLOC_ALIGN 8
536 // Void pointers are 8 bytes
537 # define ACE_SIZEOF_VOID_P 8
538 #endif /* ACE_WIN64 */
540 #if !defined (ACE_DISABLES_THREAD_LIBRARY_CALLS)
541 # define ACE_DISABLES_THREAD_LIBRARY_CALLS 0
542 #endif /* ACE_DISABLES_THREAD_LIBRARY_CALLS */
544 #define ACE_HAS_LOG_MSG_NT_EVENT_LOG
546 #define ACE_HAS_LLSEEK
548 // Needed for obtaining the MAC address
550 #if defined (_MSC_VER)
551 # pragma comment(lib, "netapi32.lib") // needed for obtaing MACaddress
554 #if !defined (WINVER)
555 # define WINVER 0x0400 // pretend it's at least WinNT 4.0
558 ///////////////////////////////////////
559 // windows version-specific definitions
560 // see: http://msdn2.microsoft.com/en-us/library/aa383745.aspx
562 // For TSS information
563 // see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/thread_local_storage.asp
566 // Windows Server 2008 definitions go here
567 // Windows Vista definitions go here
568 # if ! defined(ACE_DEFAULT_THREAD_KEYS)
569 # define ACE_DEFAULT_THREAD_KEYS 1088
570 # endif // ! defined(ACE_DEFAULT_THREAD_KEYS)
571 #elif (WINVER>=0x0502)
572 // Windows Server 2003 SP1 definitions go here
573 # if ! defined(ACE_DEFAULT_THREAD_KEYS)
574 # define ACE_DEFAULT_THREAD_KEYS 1088
575 # endif // ! defined(ACE_DEFAULT_THREAD_KEYS)
576 #elif (WINVER>=0x0501)
577 // Windows XP definitions go here
578 # if ! defined(ACE_DEFAULT_THREAD_KEYS)
579 # define ACE_DEFAULT_THREAD_KEYS 1088
580 # endif // ! defined(ACE_DEFAULT_THREAD_KEYS)
581 #elif (WINVER>=0x0500)
582 // Windows 2000 definitions go here
583 # if ! defined(ACE_DEFAULT_THREAD_KEYS)
584 # define ACE_DEFAULT_THREAD_KEYS 1088
585 # endif // ! defined(ACE_DEFAULT_THREAD_KEYS)
586 #elif (WINVER>=0x0410)
587 // Windows 98 definitions go here
588 # if ! defined(ACE_DEFAULT_THREAD_KEYS)
589 # define ACE_DEFAULT_THREAD_KEYS 80
590 # endif // ! defined(ACE_DEFAULT_THREAD_KEYS)
593 # if ! defined(ACE_DEFAULT_THREAD_KEYS)
594 # define ACE_DEFAULT_THREAD_KEYS 64
595 # endif // ! defined(ACE_DEFAULT_THREAD_KEYS)
598 #if !defined (ACE_DEFAULT_BACKLOG)
599 # define ACE_DEFAULT_BACKLOG SOMAXCONN
600 #endif /* ACE_DEFAULT_BACKLOG */
602 #include /**/ "ace/post.h"
603 #endif /* ACE_CONFIG_WIN32_COMMON_H */