[1166] | 1 | /**
|
---|
| 2 | * This file has no copyright assigned and is placed in the Public Domain.
|
---|
| 3 | * This file is part of the mingw-w64 runtime package.
|
---|
| 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
---|
| 5 | */
|
---|
| 6 | #ifndef _HTTPEXT_H_
|
---|
| 7 | #define _HTTPEXT_H_
|
---|
| 8 |
|
---|
| 9 | #include <windows.h>
|
---|
| 10 |
|
---|
| 11 | #ifdef __cplusplus
|
---|
| 12 | extern "C" {
|
---|
| 13 | #endif
|
---|
| 14 |
|
---|
| 15 | #define HSE_VERSION_MAJOR 6
|
---|
| 16 | #define HSE_VERSION_MINOR 0
|
---|
| 17 | #define HSE_LOG_BUFFER_LEN 80
|
---|
| 18 | #define HSE_MAX_EXT_DLL_NAME_LEN 256
|
---|
| 19 |
|
---|
| 20 | #define HSE_VERSION MAKELONG(HSE_VERSION_MINOR,HSE_VERSION_MAJOR)
|
---|
| 21 |
|
---|
| 22 | #define HSE_STATUS_SUCCESS 1
|
---|
| 23 | #define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2
|
---|
| 24 | #define HSE_STATUS_PENDING 3
|
---|
| 25 | #define HSE_STATUS_ERROR 4
|
---|
| 26 |
|
---|
| 27 | #define HSE_REQ_BASE 0
|
---|
| 28 | #define HSE_REQ_SEND_URL_REDIRECT_RESP (HSE_REQ_BASE + 1)
|
---|
| 29 | #define HSE_REQ_SEND_URL (HSE_REQ_BASE + 2)
|
---|
| 30 | #define HSE_REQ_SEND_RESPONSE_HEADER (HSE_REQ_BASE + 3)
|
---|
| 31 | #define HSE_REQ_DONE_WITH_SESSION (HSE_REQ_BASE + 4)
|
---|
| 32 | #define HSE_REQ_END_RESERVED 1000
|
---|
| 33 |
|
---|
| 34 | #define HSE_REQ_MAP_URL_TO_PATH (HSE_REQ_END_RESERVED+1)
|
---|
| 35 | #define HSE_REQ_GET_SSPI_INFO (HSE_REQ_END_RESERVED+2)
|
---|
| 36 | #define HSE_APPEND_LOG_PARAMETER (HSE_REQ_END_RESERVED+3)
|
---|
| 37 | #define HSE_REQ_IO_COMPLETION (HSE_REQ_END_RESERVED+5)
|
---|
| 38 | #define HSE_REQ_TRANSMIT_FILE (HSE_REQ_END_RESERVED+6)
|
---|
| 39 | #define HSE_REQ_REFRESH_ISAPI_ACL (HSE_REQ_END_RESERVED+7)
|
---|
| 40 | #define HSE_REQ_IS_KEEP_CONN (HSE_REQ_END_RESERVED+8)
|
---|
| 41 | #define HSE_REQ_ASYNC_READ_CLIENT (HSE_REQ_END_RESERVED+10)
|
---|
| 42 | #define HSE_REQ_GET_IMPERSONATION_TOKEN (HSE_REQ_END_RESERVED+11)
|
---|
| 43 | #define HSE_REQ_MAP_URL_TO_PATH_EX (HSE_REQ_END_RESERVED+12)
|
---|
| 44 | #define HSE_REQ_ABORTIVE_CLOSE (HSE_REQ_END_RESERVED+14)
|
---|
| 45 | #define HSE_REQ_GET_CERT_INFO_EX (HSE_REQ_END_RESERVED+15)
|
---|
| 46 | #define HSE_REQ_SEND_RESPONSE_HEADER_EX (HSE_REQ_END_RESERVED+16)
|
---|
| 47 | #define HSE_REQ_CLOSE_CONNECTION (HSE_REQ_END_RESERVED+17)
|
---|
| 48 | #define HSE_REQ_IS_CONNECTED (HSE_REQ_END_RESERVED+18)
|
---|
| 49 | #define HSE_REQ_MAP_UNICODE_URL_TO_PATH (HSE_REQ_END_RESERVED+23)
|
---|
| 50 | #define HSE_REQ_MAP_UNICODE_URL_TO_PATH_EX (HSE_REQ_END_RESERVED+24)
|
---|
| 51 | #define HSE_REQ_EXEC_UNICODE_URL (HSE_REQ_END_RESERVED+25)
|
---|
| 52 | #define HSE_REQ_EXEC_URL (HSE_REQ_END_RESERVED+26)
|
---|
| 53 | #define HSE_REQ_GET_EXEC_URL_STATUS (HSE_REQ_END_RESERVED+27)
|
---|
| 54 | #define HSE_REQ_SEND_CUSTOM_ERROR (HSE_REQ_END_RESERVED+28)
|
---|
| 55 | #define HSE_REQ_IS_IN_PROCESS (HSE_REQ_END_RESERVED+30)
|
---|
| 56 | #define HSE_REQ_REPORT_UNHEALTHY (HSE_REQ_END_RESERVED+32)
|
---|
| 57 | #define HSE_REQ_NORMALIZE_URL (HSE_REQ_END_RESERVED+33)
|
---|
| 58 | #define HSE_REQ_VECTOR_SEND (HSE_REQ_END_RESERVED+37)
|
---|
| 59 | #define HSE_REQ_GET_ANONYMOUS_TOKEN (HSE_REQ_END_RESERVED+38)
|
---|
| 60 | #define HSE_REQ_GET_CACHE_INVALIDATION_CALLBACK (HSE_REQ_END_RESERVED+40)
|
---|
| 61 | #define HSE_REQ_GET_UNICODE_ANONYMOUS_TOKEN (HSE_REQ_END_RESERVED+41)
|
---|
| 62 | #define HSE_REQ_GET_TRACE_INFO (HSE_REQ_END_RESERVED+42)
|
---|
| 63 |
|
---|
| 64 | #define HSE_TERM_ADVISORY_UNLOAD 0x00000001
|
---|
| 65 | #define HSE_TERM_MUST_UNLOAD 0x00000002
|
---|
| 66 |
|
---|
| 67 | #define HSE_IO_SYNC 0x00000001
|
---|
| 68 | #define HSE_IO_ASYNC 0x00000002
|
---|
| 69 | #define HSE_IO_DISCONNECT_AFTER_SEND 0x00000004
|
---|
| 70 | #define HSE_IO_SEND_HEADERS 0x00000008
|
---|
| 71 | #define HSE_IO_NODELAY 0x00001000
|
---|
| 72 |
|
---|
| 73 | #define HSE_IO_FINAL_SEND 0x00000010
|
---|
| 74 | #define HSE_IO_CACHE_RESPONSE 0x00000020
|
---|
| 75 |
|
---|
| 76 | typedef LPVOID HCONN;
|
---|
| 77 |
|
---|
| 78 | typedef struct _HSE_VERSION_INFO {
|
---|
| 79 | DWORD dwExtensionVersion;
|
---|
| 80 | CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
|
---|
| 81 | } HSE_VERSION_INFO,*LPHSE_VERSION_INFO;
|
---|
| 82 |
|
---|
| 83 | typedef struct _EXTENSION_CONTROL_BLOCK {
|
---|
| 84 | DWORD cbSize;
|
---|
| 85 | DWORD dwVersion;
|
---|
| 86 | HCONN ConnID;
|
---|
| 87 | DWORD dwHttpStatusCode;
|
---|
| 88 | CHAR lpszLogData[HSE_LOG_BUFFER_LEN];
|
---|
| 89 | LPSTR lpszMethod;
|
---|
| 90 | LPSTR lpszQueryString;
|
---|
| 91 | LPSTR lpszPathInfo;
|
---|
| 92 | LPSTR lpszPathTranslated;
|
---|
| 93 |
|
---|
| 94 | DWORD cbTotalBytes;
|
---|
| 95 | DWORD cbAvailable;
|
---|
| 96 | LPBYTE lpbData;
|
---|
| 97 | LPSTR lpszContentType;
|
---|
| 98 | WINBOOL (WINAPI *GetServerVariable) (HCONN hConn,LPSTR lpszVariableName,LPVOID lpvBuffer,LPDWORD lpdwSize);
|
---|
| 99 | WINBOOL (WINAPI *WriteClient) (HCONN ConnID,LPVOID Buffer,LPDWORD lpdwBytes,DWORD dwReserved);
|
---|
| 100 | WINBOOL (WINAPI *ReadClient) (HCONN ConnID,LPVOID lpvBuffer,LPDWORD lpdwSize);
|
---|
| 101 | WINBOOL (WINAPI *ServerSupportFunction)(HCONN hConn,DWORD dwHSERequest,LPVOID lpvBuffer,LPDWORD lpdwSize,LPDWORD lpdwDataType);
|
---|
| 102 | } EXTENSION_CONTROL_BLOCK,*LPEXTENSION_CONTROL_BLOCK;
|
---|
| 103 |
|
---|
| 104 | #define HSE_URL_FLAGS_READ 0x00000001
|
---|
| 105 | #define HSE_URL_FLAGS_WRITE 0x00000002
|
---|
| 106 | #define HSE_URL_FLAGS_EXECUTE 0x00000004
|
---|
| 107 | #define HSE_URL_FLAGS_SSL 0x00000008
|
---|
| 108 | #define HSE_URL_FLAGS_DONT_CACHE 0x00000010
|
---|
| 109 | #define HSE_URL_FLAGS_NEGO_CERT 0x00000020
|
---|
| 110 | #define HSE_URL_FLAGS_REQUIRE_CERT 0x00000040
|
---|
| 111 | #define HSE_URL_FLAGS_MAP_CERT 0x00000080
|
---|
| 112 | #define HSE_URL_FLAGS_SSL128 0x00000100
|
---|
| 113 | #define HSE_URL_FLAGS_SCRIPT 0x00000200
|
---|
| 114 |
|
---|
| 115 | #define HSE_URL_FLAGS_MASK 0x000003ff
|
---|
| 116 |
|
---|
| 117 | typedef struct _HSE_URL_MAPEX_INFO {
|
---|
| 118 | CHAR lpszPath[MAX_PATH];
|
---|
| 119 | DWORD dwFlags;
|
---|
| 120 | DWORD cchMatchingPath;
|
---|
| 121 | DWORD cchMatchingURL;
|
---|
| 122 | DWORD dwReserved1;
|
---|
| 123 | DWORD dwReserved2;
|
---|
| 124 | } HSE_URL_MAPEX_INFO,*LPHSE_URL_MAPEX_INFO;
|
---|
| 125 |
|
---|
| 126 | typedef struct _HSE_UNICODE_URL_MAPEX_INFO {
|
---|
| 127 | WCHAR lpszPath[MAX_PATH];
|
---|
| 128 | DWORD dwFlags;
|
---|
| 129 | DWORD cchMatchingPath;
|
---|
| 130 | DWORD cchMatchingURL;
|
---|
| 131 | } HSE_UNICODE_URL_MAPEX_INFO,*LPHSE_UNICODE_URL_MAPEX_INFO;
|
---|
| 132 |
|
---|
| 133 | typedef VOID (WINAPI *PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK *pECB,PVOID pContext,DWORD cbIO,DWORD dwError);
|
---|
| 134 |
|
---|
| 135 | typedef struct _HSE_TF_INFO {
|
---|
| 136 | PFN_HSE_IO_COMPLETION pfnHseIO;
|
---|
| 137 | PVOID pContext;
|
---|
| 138 | HANDLE hFile;
|
---|
| 139 | LPCSTR pszStatusCode;
|
---|
| 140 | DWORD BytesToWrite;
|
---|
| 141 | DWORD Offset;
|
---|
| 142 | PVOID pHead;
|
---|
| 143 | DWORD HeadLength;
|
---|
| 144 | PVOID pTail;
|
---|
| 145 | DWORD TailLength;
|
---|
| 146 | DWORD dwFlags;
|
---|
| 147 | } HSE_TF_INFO,*LPHSE_TF_INFO;
|
---|
| 148 |
|
---|
| 149 | typedef struct _HSE_SEND_HEADER_EX_INFO {
|
---|
| 150 | LPCSTR pszStatus;
|
---|
| 151 | LPCSTR pszHeader;
|
---|
| 152 | DWORD cchStatus;
|
---|
| 153 | DWORD cchHeader;
|
---|
| 154 | WINBOOL fKeepConn;
|
---|
| 155 | } HSE_SEND_HEADER_EX_INFO,*LPHSE_SEND_HEADER_EX_INFO;
|
---|
| 156 |
|
---|
| 157 | #define HSE_EXEC_URL_NO_HEADERS 0x02
|
---|
| 158 | #define HSE_EXEC_URL_IGNORE_CURRENT_INTERCEPTOR 0x04
|
---|
| 159 | #define HSE_EXEC_URL_IGNORE_VALIDATION_AND_RANGE 0x10
|
---|
| 160 | #define HSE_EXEC_URL_DISABLE_CUSTOM_ERROR 0x20
|
---|
| 161 | #define HSE_EXEC_URL_SSI_CMD 0x40
|
---|
| 162 |
|
---|
| 163 | typedef struct _HSE_EXEC_URL_USER_INFO {
|
---|
| 164 | HANDLE hImpersonationToken;
|
---|
| 165 | LPSTR pszCustomUserName;
|
---|
| 166 | LPSTR pszCustomAuthType;
|
---|
| 167 | } HSE_EXEC_URL_USER_INFO,*LPHSE_EXEC_URL_USER_INFO;
|
---|
| 168 |
|
---|
| 169 | typedef struct _HSE_EXEC_URL_ENTITY_INFO {
|
---|
| 170 | DWORD cbAvailable;
|
---|
| 171 | LPVOID lpbData;
|
---|
| 172 | } HSE_EXEC_URL_ENTITY_INFO,*LPHSE_EXEC_URL_ENTITY_INFO;
|
---|
| 173 |
|
---|
| 174 | typedef struct _HSE_EXEC_URL_STATUS {
|
---|
| 175 | USHORT uHttpStatusCode;
|
---|
| 176 | USHORT uHttpSubStatus;
|
---|
| 177 | DWORD dwWin32Error;
|
---|
| 178 | } HSE_EXEC_URL_STATUS,*LPHSE_EXEC_URL_STATUS;
|
---|
| 179 |
|
---|
| 180 | typedef struct _HSE_EXEC_URL_INFO {
|
---|
| 181 | LPSTR pszUrl;
|
---|
| 182 | LPSTR pszMethod;
|
---|
| 183 | LPSTR pszChildHeaders;
|
---|
| 184 | LPHSE_EXEC_URL_USER_INFO pUserInfo;
|
---|
| 185 | LPHSE_EXEC_URL_ENTITY_INFO pEntity;
|
---|
| 186 | DWORD dwExecUrlFlags;
|
---|
| 187 | } HSE_EXEC_URL_INFO,*LPHSE_EXEC_URL_INFO;
|
---|
| 188 |
|
---|
| 189 | typedef struct _HSE_EXEC_UNICODE_URL_USER_INFO {
|
---|
| 190 | HANDLE hImpersonationToken;
|
---|
| 191 | LPWSTR pszCustomUserName;
|
---|
| 192 | LPSTR pszCustomAuthType;
|
---|
| 193 | } HSE_EXEC_UNICODE_URL_USER_INFO,*LPHSE_EXEC_UNICODE_URL_USER_INFO;
|
---|
| 194 |
|
---|
| 195 | typedef struct _HSE_EXEC_UNICODE_URL_INFO {
|
---|
| 196 | LPWSTR pszUrl;
|
---|
| 197 | LPSTR pszMethod;
|
---|
| 198 | LPSTR pszChildHeaders;
|
---|
| 199 | LPHSE_EXEC_UNICODE_URL_USER_INFO pUserInfo;
|
---|
| 200 | LPHSE_EXEC_URL_ENTITY_INFO pEntity;
|
---|
| 201 | DWORD dwExecUrlFlags;
|
---|
| 202 | } HSE_EXEC_UNICODE_URL_INFO,*LPHSE_EXEC_UNICODE_URL_INFO;
|
---|
| 203 |
|
---|
| 204 | typedef struct _HSE_CUSTOM_ERROR_INFO {
|
---|
| 205 | CHAR *pszStatus;
|
---|
| 206 | USHORT uHttpSubError;
|
---|
| 207 | WINBOOL fAsync;
|
---|
| 208 | } HSE_CUSTOM_ERROR_INFO,*LPHSE_CUSTOM_ERROR_INFO;
|
---|
| 209 |
|
---|
| 210 | #define HSE_VECTOR_ELEMENT_TYPE_MEMORY_BUFFER 0
|
---|
| 211 | #define HSE_VECTOR_ELEMENT_TYPE_FILE_HANDLE 1
|
---|
| 212 |
|
---|
| 213 | typedef struct _HSE_VECTOR_ELEMENT {
|
---|
| 214 | DWORD ElementType;
|
---|
| 215 | PVOID pvContext;
|
---|
| 216 | ULONGLONG cbOffset;
|
---|
| 217 | ULONGLONG cbSize;
|
---|
| 218 | } HSE_VECTOR_ELEMENT,*LPHSE_VECTOR_ELEMENT;
|
---|
| 219 |
|
---|
| 220 | typedef struct _HSE_RESPONSE_VECTOR {
|
---|
| 221 | DWORD dwFlags;
|
---|
| 222 | LPSTR pszStatus;
|
---|
| 223 | LPSTR pszHeaders;
|
---|
| 224 | DWORD nElementCount;
|
---|
| 225 | LPHSE_VECTOR_ELEMENT lpElementArray;
|
---|
| 226 | } HSE_RESPONSE_VECTOR,*LPHSE_RESPONSE_VECTOR;
|
---|
| 227 |
|
---|
| 228 | typedef HRESULT (WINAPI *PFN_HSE_CACHE_INVALIDATION_CALLBACK)(WCHAR *pszUrl);
|
---|
| 229 |
|
---|
| 230 | #include <wincrypt.h>
|
---|
| 231 |
|
---|
| 232 | typedef struct _CERT_CONTEXT_EX {
|
---|
| 233 | CERT_CONTEXT CertContext;
|
---|
| 234 | DWORD cbAllocated;
|
---|
| 235 | DWORD dwCertificateFlags;
|
---|
| 236 | } CERT_CONTEXT_EX;
|
---|
| 237 |
|
---|
| 238 | typedef struct _HSE_TRACE_INFO {
|
---|
| 239 | WINBOOL fTraceRequest;
|
---|
| 240 | BYTE TraceContextId[16];
|
---|
| 241 | DWORD dwReserved1;
|
---|
| 242 | DWORD dwReserved2;
|
---|
| 243 | } HSE_TRACE_INFO,*LPHSE_TRACE_INFO;
|
---|
| 244 |
|
---|
| 245 | #define HSE_APP_FLAG_IN_PROCESS 0
|
---|
| 246 | #define HSE_APP_FLAG_ISOLATED_OOP 1
|
---|
| 247 | #define HSE_APP_FLAG_POOLED_OOP 2
|
---|
| 248 |
|
---|
| 249 | WINBOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer);
|
---|
| 250 | DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *pECB);
|
---|
| 251 | WINBOOL WINAPI TerminateExtension(DWORD dwFlags);
|
---|
| 252 |
|
---|
| 253 | typedef WINBOOL (WINAPI *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO *pVer);
|
---|
| 254 | typedef DWORD (WINAPI *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK *pECB);
|
---|
| 255 | typedef WINBOOL (WINAPI *PFN_TERMINATEEXTENSION)(DWORD dwFlags);
|
---|
| 256 |
|
---|
| 257 | #ifdef __cplusplus
|
---|
| 258 | }
|
---|
| 259 | #endif
|
---|
| 260 | #endif
|
---|