1 #ifndef _PI3WEB_SAPI_H_
2 #define _PI3WEB_SAPI_H_
3
4 #ifdef PHP_WIN32
5 # include <windows.h>
6 # ifdef PHP5PI3WEB_EXPORTS
7 # define MODULE_API __declspec(dllexport)
8 # else
9 # define MODULE_API __declspec(dllimport)
10 # endif
11 #else
12 # if defined(__GNUC__) && __GNUC__ >= 4
13 # define MODULE_API __attribute__ ((visibility("default")))
14 # else
15 # define MODULE_API
16 # endif
17 # define far
18
19 typedef int BOOL;
20 typedef void far *LPVOID;
21 typedef unsigned long DWORD;
22 typedef DWORD far *LPDWORD;
23 typedef char CHAR;
24 typedef CHAR *LPSTR;
25 typedef unsigned char BYTE;
26 typedef BYTE far *LPBYTE;
27 #endif
28
29 typedef LPVOID HCONN;
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 #define PHP_MODE_STANDARD 1
36 #define PHP_MODE_HIGHLIGHT 2
37 #define PHP_MODE_INDENT 3
38 #define PHP_MODE_LINT 4
39
40
41
42
43 typedef struct _CONTROL_BLOCK {
44 DWORD cbSize;
45 HCONN ConnID;
46 DWORD dwHttpStatusCode;
47 CHAR lpszLogData[80];
48
49 LPSTR lpszMethod;
50 LPSTR lpszQueryString;
51 LPSTR lpszPathInfo;
52 LPSTR lpszPathTranslated;
53 LPSTR lpszFileName;
54 LPSTR lpszUri;
55 LPSTR lpszReq;
56 LPSTR lpszUser;
57 LPSTR lpszPassword;
58
59 DWORD cbTotalBytes;
60 DWORD cbAvailable;
61 LPBYTE lpbData;
62
63 LPSTR lpszContentType;
64 DWORD dwBehavior;
65
66
67 LPVOID (* GetVariableNames) (HCONN hConn);
68
69 BOOL (* GetServerVariable) ( HCONN hConn,
70 LPSTR lpszVariableName,
71 LPVOID lpvBuffer,
72 LPDWORD lpdwSize );
73
74 BOOL (* WriteClient) ( HCONN hConn,
75 LPVOID lpvBuffer,
76 LPDWORD lpdwBytes,
77 DWORD dwReserved );
78
79 BOOL (* ReadClient) ( HCONN hConn,
80 LPVOID lpvBuffer,
81 LPDWORD lpdwSize );
82
83 BOOL (* SendHeaderFunction)( HCONN hConn,
84 LPDWORD lpdwSize,
85 LPDWORD lpdwDataType );
86
87 } CONTROL_BLOCK, *LPCONTROL_BLOCK;
88
89 MODULE_API DWORD PHP5_wrapper(LPCONTROL_BLOCK lpCB);
90 MODULE_API BOOL PHP5_startup();
91 MODULE_API BOOL PHP5_shutdown();
92
93
94 typedef DWORD ( * PFN_WRAPPERFUNC )( CONTROL_BLOCK *pCB );
95
96
97
98 #ifdef __cplusplus
99 }
100 #endif
101
102 #endif