xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/httpext.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_httpext.d)
8  */
9 module core.sys.windows.httpext;
10 version (Windows):
11 @system:
12 
13 /* Comment from MinGW
14        httpext.h - Header for ISAPI extensions.
15 
16        This file is part of a free library for the Win32 API.
17 
18        This library is distributed in the hope that it will be useful,
19        but WITHOUT ANY WARRANTY; without even the implied warranty of
20        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
21 */
22 
23 import core.sys.windows.basetsd /+: DECLARE_HANDLE, HANDLE+/;
24 import core.sys.windows.windef /+: BOOL, CHAR, DWORD, LPBYTE, LPDWORD+/;
25 import core.sys.windows.winnt /+: LPCSTR, LPSTR, LPVOID, PVOID, VOID+/;
26 
27 enum {
28     HSE_VERSION_MAJOR               = 2,
29     HSE_VERSION_MINOR               = 0,
30     HSE_LOG_BUFFER_LEN              = 80,
31     HSE_MAX_EXT_DLL_NAME_LEN        = 256,
32     HSE_STATUS_SUCCESS              = 1,
33     HSE_STATUS_SUCCESS_AND_KEEP_CONN,
34     HSE_STATUS_PENDING,
35     HSE_STATUS_ERROR,
36     HSE_REQ_BASE                    = 0,
37     HSE_REQ_SEND_URL_REDIRECT_RESP,
38     HSE_REQ_SEND_URL,
39     HSE_REQ_SEND_RESPONSE_HEADER,
40     HSE_REQ_DONE_WITH_SESSION,
41     HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016,
42     HSE_REQ_END_RESERVED            = 1000,
43     HSE_TERM_ADVISORY_UNLOAD        = 0x00000001,
44     HSE_TERM_MUST_UNLOAD,
45     HSE_IO_SYNC                     = 0x00000001,
46     HSE_IO_ASYNC,
47     HSE_IO_DISCONNECT_AFTER_SEND    = 0x00000004,
48     HSE_IO_SEND_HEADERS             = 0x00000008
49 }
50 
51 mixin DECLARE_HANDLE!("HCONN");
52 
53 struct HSE_VERSION_INFO {
54     DWORD dwExtensionVersion;
55     CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc = 0;
56 }
57 alias HSE_VERSION_INFO* LPHSE_VERSION_INFO;
58 
59 struct EXTENSION_CONTROL_BLOCK {
60     DWORD  cbSize = EXTENSION_CONTROL_BLOCK.sizeof;
61     DWORD  dwVersion;
62     HCONN  ConnID;
63     DWORD  dwHttpStatusCode;
64     CHAR[HSE_LOG_BUFFER_LEN] lpszLogData = 0;
65     LPSTR  lpszMethod;
66     LPSTR  lpszQueryString;
67     LPSTR  lpszPathInfo;
68     LPSTR  lpszPathTranslated;
69     DWORD  cbTotalBytes;
70     DWORD  cbAvailable;
71     LPBYTE lpbData;
72     LPSTR  lpszContentType;
73     extern (Windows) {
74         BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) GetServerVariable;
75         BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient;
76         BOOL function(HCONN, LPVOID, LPDWORD) ReadClient;
77         BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) ServerSupportFunction;
78     }
79 }
80 alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK;
81 
82 extern (Windows) {
83     alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION;
84     alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC;
85     alias BOOL function(DWORD) PFN_TERMINATEEXTENSION;
86     alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION;
87 }
88 
89 struct HSE_TF_INFO {
90     PFN_HSE_IO_COMPLETION pfnHseIO;
91     PVOID  pContext;
92     HANDLE hFile;
93     LPCSTR pszStatusCode;
94     DWORD  BytesToWrite;
95     DWORD  Offset;
96     PVOID  pHead;
97     DWORD  HeadLength;
98     PVOID  pTail;
99     DWORD  TailLength;
100     DWORD  dwFlags;
101 }
102 alias HSE_TF_INFO* LPHSE_TF_INFO;
103 
104 struct HSE_SEND_HEADER_EX_INFO {
105     LPCSTR pszStatus;
106     LPCSTR pszHeader;
107     DWORD  cchStatus;
108     DWORD  cchHeader;
109     BOOL   fKeepConn;
110 }
111 alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF;
112 
113 extern (Windows) {
114     BOOL GetExtensionVersion(HSE_VERSION_INFO*);
115     DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*);
116     BOOL TerminateExtension(DWORD);
117 }
118