1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
5: | Copyright (c) 1997-2014 The PHP Group |
6: +----------------------------------------------------------------------+
7: | This source file is subject to version 3.01 of the PHP license, |
8: | that is bundled with this package in the file LICENSE, and is |
9: | available through the world-wide-web at the following url: |
10: | http://www.php.net/license/3_01.txt |
11: | If you did not receive a copy of the PHP license and are unable to |
12: | obtain it through the world-wide-web, please send a note to |
13: | license@php.net so we can mail you a copy immediately. |
14: +----------------------------------------------------------------------+
15: | Authors: Daniel Beulshausen <daniel@php4win.de> |
16: +----------------------------------------------------------------------+
17: */
18:
19: /* $Id: tsrm_win32.h,v 1.1.1.4 2014/06/15 20:04:03 misho Exp $ */
20:
21: #ifndef TSRM_WIN32_H
22: #define TSRM_WIN32_H
23:
24: #include "TSRM.h"
25: #include <windows.h>
26:
27: struct ipc_perm {
28: int key;
29: unsigned short uid;
30: unsigned short gid;
31: unsigned short cuid;
32: unsigned short cgid;
33: unsigned short mode;
34: unsigned short seq;
35: };
36:
37: struct shmid_ds {
38: struct ipc_perm shm_perm;
39: int shm_segsz;
40: time_t shm_atime;
41: time_t shm_dtime;
42: time_t shm_ctime;
43: unsigned short shm_cpid;
44: unsigned short shm_lpid;
45: short shm_nattch;
46: };
47:
48: typedef struct {
49: FILE *stream;
50: HANDLE prochnd;
51: } process_pair;
52:
53: typedef struct {
54: void *addr;
55: HANDLE info;
56: HANDLE segment;
57: struct shmid_ds *descriptor;
58: } shm_pair;
59:
60: typedef struct {
61: process_pair *process;
62: shm_pair *shm;
63: int process_size;
64: int shm_size;
65: char *comspec;
66: HANDLE impersonation_token;
67: PSID impersonation_token_sid;
68: } tsrm_win32_globals;
69:
70: #ifdef ZTS
71: # define TWG(v) TSRMG(win32_globals_id, tsrm_win32_globals *, v)
72: #else
73: # define TWG(v) (win32_globals.v)
74: #endif
75:
76: #define IPC_PRIVATE 0
77: #define IPC_CREAT 00001000
78: #define IPC_EXCL 00002000
79: #define IPC_NOWAIT 00004000
80:
81: #define IPC_RMID 0
82: #define IPC_SET 1
83: #define IPC_STAT 2
84: #define IPC_INFO 3
85:
86: #define SHM_R PAGE_READONLY
87: #define SHM_W PAGE_READWRITE
88:
89: #define SHM_RDONLY FILE_MAP_READ
90: #define SHM_RND FILE_MAP_WRITE
91: #define SHM_REMAP FILE_MAP_COPY
92:
93: char * tsrm_win32_get_path_sid_key(const char *pathname TSRMLS_DC);
94:
95: TSRM_API void tsrm_win32_startup(void);
96: TSRM_API void tsrm_win32_shutdown(void);
97:
98: TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env TSRMLS_DC);
99: TSRM_API FILE *popen(const char *command, const char *type);
100: TSRM_API int pclose(FILE *stream);
101: TSRM_API int tsrm_win32_access(const char *pathname, int mode TSRMLS_DC);
102: TSRM_API int win32_utime(const char *filename, struct utimbuf *buf);
103:
104: TSRM_API int shmget(int key, int size, int flags);
105: TSRM_API void *shmat(int key, const void *shmaddr, int flags);
106: TSRM_API int shmdt(const void *shmaddr);
107: TSRM_API int shmctl(int key, int cmd, struct shmid_ds *buf);
108:
109: TSRM_API char *realpath(char *orig_path, char *buffer);
110: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>