1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #ifndef TSRM_WIN32_H
22 #define TSRM_WIN32_H
23
24 #include "TSRM.h"
25 #include <windows.h>
26 #if HAVE_UTIME
27 # include <sys/utime.h>
28 #endif
29
30 struct ipc_perm {
31 int key;
32 unsigned short uid;
33 unsigned short gid;
34 unsigned short cuid;
35 unsigned short cgid;
36 unsigned short mode;
37 unsigned short seq;
38 };
39
40 struct shmid_ds {
41 struct ipc_perm shm_perm;
42 int shm_segsz;
43 time_t shm_atime;
44 time_t shm_dtime;
45 time_t shm_ctime;
46 unsigned short shm_cpid;
47 unsigned short shm_lpid;
48 short shm_nattch;
49 };
50
51 typedef struct {
52 FILE *stream;
53 HANDLE prochnd;
54 } process_pair;
55
56 typedef struct {
57 void *addr;
58 HANDLE info;
59 HANDLE segment;
60 struct shmid_ds *descriptor;
61 } shm_pair;
62
63 typedef struct {
64 process_pair *process;
65 shm_pair *shm;
66 int process_size;
67 int shm_size;
68 char *comspec;
69 HANDLE impersonation_token;
70 PSID impersonation_token_sid;
71 } tsrm_win32_globals;
72
73 #ifdef ZTS
74 # define TWG(v) TSRMG_STATIC(win32_globals_id, tsrm_win32_globals *, v)
75 TSRMLS_CACHE_EXTERN()
76 #else
77 # define TWG(v) (win32_globals.v)
78 #endif
79
80 #define IPC_PRIVATE 0
81 #define IPC_CREAT 00001000
82 #define IPC_EXCL 00002000
83 #define IPC_NOWAIT 00004000
84
85 #define IPC_RMID 0
86 #define IPC_SET 1
87 #define IPC_STAT 2
88 #define IPC_INFO 3
89
90 #define SHM_R PAGE_READONLY
91 #define SHM_W PAGE_READWRITE
92
93 #define SHM_RDONLY FILE_MAP_READ
94 #define SHM_RND FILE_MAP_WRITE
95 #define SHM_REMAP FILE_MAP_COPY
96
97 char * tsrm_win32_get_path_sid_key(const char *pathname );
98
99 TSRM_API void tsrm_win32_startup(void);
100 TSRM_API void tsrm_win32_shutdown(void);
101
102 TSRM_API FILE *popen_ex(const char *command, const char *type, const char *cwd, char *env);
103 TSRM_API FILE *popen(const char *command, const char *type);
104 TSRM_API int pclose(FILE *stream);
105 TSRM_API int tsrm_win32_access(const char *pathname, int mode);
106 TSRM_API int win32_utime(const char *filename, struct utimbuf *buf);
107
108 TSRM_API int shmget(int key, int size, int flags);
109 TSRM_API void *shmat(int key, const void *shmaddr, int flags);
110 TSRM_API int shmdt(const void *shmaddr);
111 TSRM_API int shmctl(int key, int cmd, struct shmid_ds *buf);
112
113 TSRM_API char *realpath(char *orig_path, char *buffer);
114 #endif