OSDN Git Service

Avoid an implication that the API is exclusively 32-bit.
[mingw/mingw-org-wsl.git] / wslapi / include / httpext.h
1 /*
2        httpext.h - Header for ISAPI extensions.
3
4        This file is part of a free library for the Win32 API.
5
6        This library is distributed in the hope that it will be useful,
7        but WITHOUT ANY WARRANTY; without even the implied warranty of
8        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9 */
10
11 #ifndef _HTTPEXT_H
12 #define _HTTPEXT_H
13 #if __GNUC__ >=3
14 #pragma GCC system_header
15 #endif
16
17 #include <windows.h>
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 #define HSE_VERSION_MAJOR       2
24 #define HSE_VERSION_MINOR       0
25 #define HSE_LOG_BUFFER_LEN      80
26 #define HSE_MAX_EXT_DLL_NAME_LEN        256
27 #define HSE_STATUS_SUCCESS      1
28 #define HSE_STATUS_SUCCESS_AND_KEEP_CONN        2
29 #define HSE_STATUS_PENDING      3
30 #define HSE_STATUS_ERROR        4
31 #define HSE_REQ_BASE    0
32 #define HSE_REQ_SEND_URL_REDIRECT_RESP  1
33 #define HSE_REQ_SEND_URL        2
34 #define HSE_REQ_SEND_RESPONSE_HEADER    3
35 #define HSE_REQ_DONE_WITH_SESSION       4
36 #define HSE_REQ_SEND_RESPONSE_HEADER_EX 1016
37 #define HSE_REQ_END_RESERVED    1000
38 #define HSE_TERM_ADVISORY_UNLOAD        0x00000001
39 #define HSE_TERM_MUST_UNLOAD    0x00000002
40 #define HSE_IO_SYNC     0x00000001
41 #define HSE_IO_ASYNC    0x00000002
42 #define HSE_IO_DISCONNECT_AFTER_SEND    0x00000004
43 #define HSE_IO_SEND_HEADERS     0x00000008
44 typedef LPVOID HCONN;
45 typedef struct _HSE_VERSION_INFO {
46         DWORD   dwExtensionVersion;
47         CHAR    lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
48 } HSE_VERSION_INFO, *LPHSE_VERSION_INFO;
49 typedef struct _EXTENSION_CONTROL_BLOCK {
50         DWORD   cbSize;
51         DWORD   dwVersion;
52         HCONN   ConnID;
53         DWORD   dwHttpStatusCode;
54         CHAR    lpszLogData[HSE_LOG_BUFFER_LEN];
55         LPSTR   lpszMethod;
56         LPSTR   lpszQueryString;
57         LPSTR   lpszPathInfo;
58         LPSTR   lpszPathTranslated;
59         DWORD   cbTotalBytes;
60         DWORD   cbAvailable;
61         LPBYTE  lpbData;
62         LPSTR   lpszContentType;
63         BOOL    (PASCAL *GetServerVariable)(HCONN,LPSTR,LPVOID,LPDWORD);
64         BOOL    (PASCAL *WriteClient)(HCONN,LPVOID,LPDWORD,DWORD);
65         BOOL    (PASCAL *ReadClient)(HCONN,LPVOID,LPDWORD);
66         BOOL    (PASCAL *ServerSupportFunction)(HCONN,DWORD,LPVOID,LPDWORD,LPDWORD);
67 } EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
68 typedef BOOL    (PASCAL *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO*);
69 typedef DWORD   (PASCAL *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*);
70 typedef BOOL    (PASCAL *PFN_TERMINATEEXTENSION)(DWORD);
71 typedef VOID    (PASCAL *PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK*,PVOID,DWORD,DWORD);
72 typedef struct _HSE_TF_INFO {
73         PFN_HSE_IO_COMPLETION pfnHseIO;
74         PVOID pContext;
75         HANDLE hFile;
76         LPCSTR pszStatusCode;
77         DWORD BytesToWrite;
78         DWORD Offset;
79         PVOID pHead;
80         DWORD HeadLength;
81         PVOID pTail;
82         DWORD TailLength;
83         DWORD dwFlags;
84 } HSE_TF_INFO, *LPHSE_TF_INFO;
85 typedef struct _HSE_SEND_HEADER_EX_INFO {
86         LPCSTR pszStatus;
87         LPCSTR pszHeader;
88         DWORD cchStatus;
89         DWORD cchHeader;
90         BOOL fKeepConn;
91 } HSE_SEND_HEADER_EX_INFO, * LPHSE_SEND_HEADER_EX_INF;
92 BOOL    PASCAL  GetExtensionVersion(HSE_VERSION_INFO*);
93 DWORD   PASCAL  HttpExtensionProc(EXTENSION_CONTROL_BLOCK*);
94 BOOL    PASCAL  TerminateExtension(DWORD);
95 #ifdef __cplusplus
96 }
97 #endif
98 #endif /* _HTTPEXT_H */