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 12 /* Comment from MinGW 13 httpext.h - Header for ISAPI extensions. 14 15 This file is part of a free library for the Win32 API. 16 17 This library is distributed in the hope that it will be useful, 18 but WITHOUT ANY WARRANTY; without even the implied warranty of 19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 20 */ 21 22 private import win32.windows; 23 24 enum { 25 HSE_VERSION_MAJOR = 2, 26 HSE_VERSION_MINOR = 0, 27 HSE_LOG_BUFFER_LEN = 80, 28 HSE_MAX_EXT_DLL_NAME_LEN = 256, 29 HSE_STATUS_SUCCESS = 1, 30 HSE_STATUS_SUCCESS_AND_KEEP_CONN, 31 HSE_STATUS_PENDING, 32 HSE_STATUS_ERROR, 33 HSE_REQ_BASE = 0, 34 HSE_REQ_SEND_URL_REDIRECT_RESP, 35 HSE_REQ_SEND_URL, 36 HSE_REQ_SEND_RESPONSE_HEADER, 37 HSE_REQ_DONE_WITH_SESSION, 38 HSE_REQ_SEND_RESPONSE_HEADER_EX = 1016, 39 HSE_REQ_END_RESERVED = 1000, 40 HSE_TERM_ADVISORY_UNLOAD = 0x00000001, 41 HSE_TERM_MUST_UNLOAD, 42 HSE_IO_SYNC = 0x00000001, 43 HSE_IO_ASYNC, 44 HSE_IO_DISCONNECT_AFTER_SEND = 0x00000004, 45 HSE_IO_SEND_HEADERS = 0x00000008 46 } 47 48 alias HANDLE HCONN; 49 50 struct HSE_VERSION_INFO { 51 DWORD dwExtensionVersion; 52 CHAR[HSE_MAX_EXT_DLL_NAME_LEN] lpszExtensionDesc; 53 } 54 alias HSE_VERSION_INFO* LPHSE_VERSION_INFO; 55 56 struct EXTENSION_CONTROL_BLOCK { 57 DWORD cbSize = EXTENSION_CONTROL_BLOCK.sizeof; 58 DWORD dwVersion; 59 HCONN ConnID; 60 DWORD dwHttpStatusCode; 61 CHAR[HSE_LOG_BUFFER_LEN] lpszLogData; 62 LPSTR lpszMethod; 63 LPSTR lpszQueryString; 64 LPSTR lpszPathInfo; 65 LPSTR lpszPathTranslated; 66 DWORD cbTotalBytes; 67 DWORD cbAvailable; 68 LPBYTE lpbData; 69 LPSTR lpszContentType; 70 extern(Pascal) BOOL function(HCONN, LPSTR, LPVOID, LPDWORD) 71 GetServerVariable; 72 extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD, DWORD) WriteClient; 73 extern(Pascal) BOOL function(HCONN, LPVOID, LPDWORD) ReadClient; 74 extern(Pascal) BOOL function(HCONN, DWORD, LPVOID, LPDWORD, LPDWORD) 75 ServerSupportFunction; 76 } 77 alias EXTENSION_CONTROL_BLOCK* LPEXTENSION_CONTROL_BLOCK; 78 79 extern (Pascal) { 80 alias BOOL function(HSE_VERSION_INFO*) PFN_GETEXTENSIONVERSION; 81 alias DWORD function(EXTENSION_CONTROL_BLOCK*) PFN_HTTPEXTENSIONPROC; 82 alias BOOL function(DWORD) PFN_TERMINATEEXTENSION; 83 alias VOID function(EXTENSION_CONTROL_BLOCK*, PVOID, DWORD, DWORD) PFN_HSE_IO_COMPLETION; 84 } 85 86 struct HSE_TF_INFO { 87 PFN_HSE_IO_COMPLETION pfnHseIO; 88 PVOID pContext; 89 HANDLE hFile; 90 LPCSTR pszStatusCode; 91 DWORD BytesToWrite; 92 DWORD Offset; 93 PVOID pHead; 94 DWORD HeadLength; 95 PVOID pTail; 96 DWORD TailLength; 97 DWORD dwFlags; 98 } 99 alias HSE_TF_INFO* LPHSE_TF_INFO; 100 101 struct HSE_SEND_HEADER_EX_INFO { 102 LPCSTR pszStatus; 103 LPCSTR pszHeader; 104 DWORD cchStatus; 105 DWORD cchHeader; 106 BOOL fKeepConn; 107 } 108 alias HSE_SEND_HEADER_EX_INFO* LPHSE_SEND_HEADER_EX_INF; 109 110 extern (Pascal) { 111 BOOL GetExtensionVersion(HSE_VERSION_INFO*); 112 DWORD HttpExtensionProc(EXTENSION_CONTROL_BLOCK*); 113 BOOL TerminateExtension(DWORD); 114 }