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