OSDN Git Service

_USE_32BIT_TIME_T resolution and prepare for release.
[mingw/mingw-org-wsl.git] / include / httpext.h
1 /**
2  * @file httpext.h
3  * @copy 2012 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 #ifndef _HTTPEXT_H
25 #define _HTTPEXT_H
26 #pragma GCC system_header
27 #include <_mingw.h>
28
29 /*
30  * ISAPI extensions.
31  */
32
33 #include <windows.h>
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 #define HSE_VERSION_MAJOR       2
40 #define HSE_VERSION_MINOR       0
41 #define HSE_LOG_BUFFER_LEN      80
42 #define HSE_MAX_EXT_DLL_NAME_LEN        256
43 #define HSE_STATUS_SUCCESS      1
44 #define HSE_STATUS_SUCCESS_AND_KEEP_CONN        2
45 #define HSE_STATUS_PENDING      3
46 #define HSE_STATUS_ERROR        4
47 #define HSE_REQ_BASE    0
48 #define HSE_REQ_SEND_URL_REDIRECT_RESP  1
49 #define HSE_REQ_SEND_URL        2
50 #define HSE_REQ_SEND_RESPONSE_HEADER    3
51 #define HSE_REQ_DONE_WITH_SESSION       4
52 #define HSE_REQ_SEND_RESPONSE_HEADER_EX 1016
53 #define HSE_REQ_END_RESERVED    1000
54 #define HSE_TERM_ADVISORY_UNLOAD        0x00000001
55 #define HSE_TERM_MUST_UNLOAD    0x00000002
56 #define HSE_IO_SYNC     0x00000001
57 #define HSE_IO_ASYNC    0x00000002
58 #define HSE_IO_DISCONNECT_AFTER_SEND    0x00000004
59 #define HSE_IO_SEND_HEADERS     0x00000008
60 typedef LPVOID HCONN;
61 typedef struct _HSE_VERSION_INFO {
62         DWORD   dwExtensionVersion;
63         CHAR    lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
64 } HSE_VERSION_INFO, *LPHSE_VERSION_INFO;
65 typedef struct _EXTENSION_CONTROL_BLOCK {
66         DWORD   cbSize;
67         DWORD   dwVersion;
68         HCONN   ConnID;
69         DWORD   dwHttpStatusCode;
70         CHAR    lpszLogData[HSE_LOG_BUFFER_LEN];
71         LPSTR   lpszMethod;
72         LPSTR   lpszQueryString;
73         LPSTR   lpszPathInfo;
74         LPSTR   lpszPathTranslated;
75         DWORD   cbTotalBytes;
76         DWORD   cbAvailable;
77         LPBYTE  lpbData;
78         LPSTR   lpszContentType;
79         BOOL    (PASCAL *GetServerVariable)(HCONN,LPSTR,LPVOID,LPDWORD);
80         BOOL    (PASCAL *WriteClient)(HCONN,LPVOID,LPDWORD,DWORD);
81         BOOL    (PASCAL *ReadClient)(HCONN,LPVOID,LPDWORD);
82         BOOL    (PASCAL *ServerSupportFunction)(HCONN,DWORD,LPVOID,LPDWORD,LPDWORD);
83 } EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
84 typedef BOOL    (PASCAL *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO*);
85 typedef DWORD   (PASCAL *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*);
86 typedef BOOL    (PASCAL *PFN_TERMINATEEXTENSION)(DWORD);
87 typedef VOID    (PASCAL *PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK*,PVOID,DWORD,DWORD);
88 typedef struct _HSE_TF_INFO {
89         PFN_HSE_IO_COMPLETION pfnHseIO;
90         PVOID pContext;
91         HANDLE hFile;
92         LPCSTR pszStatusCode;
93         DWORD BytesToWrite;
94         DWORD Offset;
95         PVOID pHead;
96         DWORD HeadLength;
97         PVOID pTail;
98         DWORD TailLength;
99         DWORD dwFlags;
100 } HSE_TF_INFO, *LPHSE_TF_INFO;
101 typedef struct _HSE_SEND_HEADER_EX_INFO {
102         LPCSTR pszStatus;
103         LPCSTR pszHeader;
104         DWORD cchStatus;
105         DWORD cchHeader;
106         BOOL fKeepConn;
107 } HSE_SEND_HEADER_EX_INFO, * LPHSE_SEND_HEADER_EX_INF;
108 BOOL    PASCAL  GetExtensionVersion(HSE_VERSION_INFO*);
109 DWORD   PASCAL  HttpExtensionProc(EXTENSION_CONTROL_BLOCK*);
110 BOOL    PASCAL  TerminateExtension(DWORD);
111 #ifdef __cplusplus
112 }
113 #endif
114 #endif /* _HTTPEXT_H */