1 /***********************************************************************\ 2 * httpext.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * * 8 * Placed into public domain * 9 \***********************************************************************/ 10 module win32.httpext; 11 version(Windows): 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 private import win32.windows; 24 25 enum { 26 HSE_VERSION_MAJOR = 2, 27 HSE_VERSION_MINOR = 0, 28 HSE_LOG_BUFFER_LEN = 80, 29 HSE_MAX_EXT_DLL_NAME_LEN = 256, 30 HSE_STATUS_SUCCESS = 1, 31 HSE_STATUS_SUCCESS_AND_KEEP_CONN, 32 HSE_STATUS_PENDING, 33 HSE_STATUS_ERROR, 34 HSE_REQ_BASE = 0, 35 HSE_REQ_SEND_URL_REDIRECT_RESP, 36 HSE_REQ_SEND_URL, 37 HSE_REQ_SEND_RESPONSE_HEADER, 38 HSE_REQ_DONE_WITH_SESSION, 39 HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, 40 HSE_REQ_END_RESERVED = 1000, 41 HSE_TERM_ADVISORY_UNLOAD = 0x00000001, 42 HSE_TERM_MUST_UNLOAD, 43 HSE_IO_SYNC = 0x00000001, 44 HSE_IO_ASYNC, 45 HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, 46 HSE_IO_SEND_HEADERS = 0x00000008 47 } 48 49 mixin DECLARE_HANDLE!("HCONN"); 50 51 struct HSE_VERSION_INFO { 52 DWORD dwExtensionVersion; 53 CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; 54 } 55 alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; 56 57 struct EXTENSION_CONTROL_BLOCK { 58 DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; 59 DWORD dwVersion; 60 HCONN ConnID; 61 DWORD dwHttpStatusCode; 62 CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; 63 LPSTR lpszMethod; 64 LPSTR lpszQueryString; 65 LPSTR lpszPathInfo; 66 LPSTR lpszPathTranslated; 67 DWORD cbTotalBytes; 68 DWORD cbAvailable; 69 LPBYTE lpbData; 70 LPSTR lpszContentType; 71 extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) 72 GetServerVariable; 73 extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; 74 extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; 75 extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) 76 ServerSupportFunction; 77 } 78 alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; 79 80 extern (Pascal) { 81 alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; 82 alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; 83 alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; 84 alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; 85 } 86 87 struct HSE_TF_INFO { 88 PFN_HSE_IO_COMPLETION pfnHseIO; 89 PVOID pContext; 90 HANDLE hFile; 91 LPCSTR pszStatusCode; 92 DWORD BytesToWrite; 93 DWORD Offset; 94 PVOID pHead; 95 DWORD HeadLength; 96 PVOID pTail; 97 DWORD TailLength; 98 DWORD dwFlags; 99 } 100 alias HSE_TF_INFO* LPHSE_TF_INFO; 101 102 struct HSE_SEND_HEADER_EX_INFO { 103 LPCSTR pszStatus; 104 LPCSTR pszHeader; 105 DWORD cchStatus; 106 DWORD cchHeader; 107 BOOL fKeepConn; 108 } 109 alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; 110 111 extern (Pascal) { 112 BOOL GetExtensionVersion(HSE_VERSION_INFO*); 113 DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); 114 BOOL TerminateExtension(DWORD); 115 }