home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F277277_os.h < prev    next >
C/C++ Source or Header  |  2004-09-23  |  4KB  |  123 lines

  1. /* Copyright 1999-2004 The Apache Software Foundation
  2.  *
  3.  * Licensed under the Apache License, Version 2.0 (the "License");
  4.  * you may not use this file except in compliance with the License.
  5.  * You may obtain a copy of the License at
  6.  *
  7.  *     http://www.apache.org/licenses/LICENSE-2.0
  8.  *
  9.  * Unless required by applicable law or agreed to in writing, software
  10.  * distributed under the License is distributed on an "AS IS" BASIS,
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12.  * See the License for the specific language governing permissions and
  13.  * limitations under the License.
  14.  */
  15.  
  16. #ifdef WIN32
  17.  
  18. #ifndef AP_OS_H
  19. #define AP_OS_H
  20. /* Delegate windows include to the apr.h header, if USER or GDI declarations
  21.  * are required (for a window rather than console application), include
  22.  * windows.h prior to any other Apache header files.
  23.  */
  24. #include "apr_pools.h"
  25.  
  26. #include <io.h>
  27. #include <fcntl.h>
  28.  
  29. #define PLATFORM "Win32"
  30.  
  31. /* going away shortly... */
  32. #define HAVE_DRIVE_LETTERS
  33. #define HAVE_UNC_PATHS
  34. #define CASE_BLIND_FILESYSTEM
  35.  
  36. #define APACHE_MPM_DIR  "server/mpm/winnt" /* generated on unix */
  37.  
  38. #include <stddef.h>
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. /* BIG RED WARNING: exit() is mapped to allow us to capture the exit
  45.  * status.  This header must only be included from modules linked into
  46.  * the ApacheCore.dll - since it's a horrible behavior to exit() from
  47.  * any module outside the main() block, and we -will- assume it's a
  48.  * fatal error.
  49.  */
  50.  
  51. AP_DECLARE_DATA extern int real_exit_code;
  52.  
  53. #define exit(status) ((exit)((real_exit_code==2) ? (real_exit_code = (status)) \
  54.                                                  : ((real_exit_code = 0), (status))))
  55.  
  56.  
  57. #ifdef AP_DECLARE_EXPORT
  58.  
  59. /* Defined in util_win32.c and available only to the core module for
  60.  * win32 MPM design.
  61.  */
  62.  
  63. AP_DECLARE(apr_status_t) ap_os_proc_filepath(char **binpath, apr_pool_t *p);
  64.  
  65. typedef enum {
  66.     AP_DLL_WINBASEAPI = 0,    // kernel32 From WinBase.h
  67.     AP_DLL_WINADVAPI = 1,     // advapi32 From WinBase.h
  68.     AP_DLL_WINSOCKAPI = 2,    // mswsock  From WinSock.h
  69.     AP_DLL_WINSOCK2API = 3,   // ws2_32   From WinSock2.h
  70.     AP_DLL_defined = 4        // must define as last idx_ + 1
  71. } ap_dlltoken_e;
  72.  
  73. FARPROC ap_load_dll_func(ap_dlltoken_e fnLib, char* fnName, int ordinal);
  74.  
  75. PSECURITY_ATTRIBUTES GetNullACL();
  76. void CleanNullACL(void *sa);
  77.  
  78. DWORD wait_for_many_objects(DWORD nCount, CONST HANDLE *lpHandles, 
  79.                             DWORD dwSeconds);
  80.  
  81. int set_listeners_noninheritable(apr_pool_t *p);
  82.  
  83.  
  84. #define AP_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \
  85.     typedef rettype (calltype *ap_winapi_fpt_##fn) args; \
  86.     static ap_winapi_fpt_##fn ap_winapi_pfn_##fn = NULL; \
  87.     __inline rettype ap_winapi_##fn args \
  88.     {   if (!ap_winapi_pfn_##fn) \
  89.             ap_winapi_pfn_##fn = (ap_winapi_fpt_##fn) ap_load_dll_func(lib, #fn, ord); \
  90.         return (*(ap_winapi_pfn_##fn)) names; }; \
  91.  
  92. /* Win2K kernel only */
  93. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINADVAPI, BOOL, WINAPI, ChangeServiceConfig2A, 0, (
  94.     SC_HANDLE hService, 
  95.     DWORD dwInfoLevel, 
  96.     LPVOID lpInfo),
  97.     (hService, dwInfoLevel, lpInfo));
  98. #undef ChangeServiceConfig2
  99. #define ChangeServiceConfig2 ap_winapi_ChangeServiceConfig2A
  100.  
  101. /* WinNT kernel only */
  102. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, (
  103.     IN HANDLE hFile),
  104.     (hFile));
  105. #undef CancelIo
  106. #define CancelIo ap_winapi_CancelIo
  107.  
  108. /* Win9x kernel only */
  109. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, DWORD, WINAPI, RegisterServiceProcess, 0, (
  110.     DWORD dwProcessId,
  111.     DWORD dwType),
  112.     (dwProcessId, dwType));
  113. #define RegisterServiceProcess ap_winapi_RegisterServiceProcess
  114.  
  115. #endif /* def AP_DECLARE_EXPORT */
  116.  
  117. #ifdef __cplusplus
  118. }
  119. #endif
  120.  
  121. #endif  /* ndef AP_OS_H */
  122. #endif  /* def WIN32 */
  123.