Import w32api version 2.5 include files
[reactos.git] / reactos / w32api / include / httpext.h
1 /*
2 httpext.h - Header for ISAPI extensions.
3
4 This file is part of a free library for the Win32 API.
5
6 This library is distributed in the hope that it will be useful,
7 but WITHOUT ANY WARRANTY; without even the implied warranty of
8 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9 */
10
11 #ifndef _HTTPEXT_H
12 #define _HTTPEXT_H
13 #if __GNUC__ >=3
14 #pragma GCC system_header
15 #endif
16
17 #include <windows.h>
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 #define HSE_VERSION_MAJOR 2
24 #define HSE_VERSION_MINOR 0
25 #define HSE_LOG_BUFFER_LEN 80
26 #define HSE_MAX_EXT_DLL_NAME_LEN 256
27 #define HSE_STATUS_SUCCESS 1
28 #define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2
29 #define HSE_STATUS_PENDING 3
30 #define HSE_STATUS_ERROR 4
31 #define HSE_REQ_BASE 0
32 #define HSE_REQ_SEND_URL_REDIRECT_RESP 1
33 #define HSE_REQ_SEND_URL 2
34 #define HSE_REQ_SEND_RESPONSE_HEADER 3
35 #define HSE_REQ_DONE_WITH_SESSION 4
36 #define HSE_REQ_END_RESERVED 1000
37 #define HSE_TERM_ADVISORY_UNLOAD 0x00000001
38 #define HSE_TERM_MUST_UNLOAD 0x00000002
39 #define HSE_IO_SYNC 0x00000001
40 #define HSE_IO_ASYNC 0x00000002
41 #define HSE_IO_DISCONNECT_AFTER_SEND 0x00000004
42 #define HSE_IO_SEND_HEADERS 0x00000008
43 typedef LPVOID HCONN;
44 typedef struct _HSE_VERSION_INFO {
45 DWORD dwExtensionVersion;
46 CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
47 } HSE_VERSION_INFO, *LPHSE_VERSION_INFO;
48 typedef struct _EXTENSION_CONTROL_BLOCK {
49 DWORD cbSize;
50 DWORD dwVersion;
51 HCONN ConnID;
52 DWORD dwHttpStatusCode;
53 CHAR lpszLogData[HSE_LOG_BUFFER_LEN];
54 LPSTR lpszMethod;
55 LPSTR lpszQueryString;
56 LPSTR lpszPathInfo;
57 LPSTR lpszPathTranslated;
58 DWORD cbTotalBytes;
59 DWORD cbAvailable;
60 LPBYTE lpbData;
61 LPSTR lpszContentType;
62 BOOL (PASCAL *GetServerVariable)(HCONN,LPSTR,LPVOID,LPDWORD);
63 BOOL (PASCAL *WriteClient)(HCONN,LPVOID,LPDWORD,DWORD);
64 BOOL (PASCAL *ReadClient)(HCONN,LPVOID,LPDWORD);
65 BOOL (PASCAL *ServerSupportFunction)(HCONN,DWORD,LPVOID,LPDWORD,LPDWORD);
66 } EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
67 typedef BOOL (PASCAL *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO*);
68 typedef DWORD (PASCAL *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*);
69 typedef BOOL (PASCAL *PFN_TERMINATEEXTENSION)(DWORD);
70 typedef VOID (PASCAL *PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK*,PVOID,DWORD,DWORD);
71 typedef struct _HSE_TF_INFO {
72 PFN_HSE_IO_COMPLETION pfnHseIO;
73 PVOID pContext;
74 HANDLE hFile;
75 LPCSTR pszStatusCode;
76 DWORD BytesToWrite;
77 DWORD Offset;
78 PVOID pHead;
79 DWORD HeadLength;
80 PVOID pTail;
81 DWORD TailLength;
82 DWORD dwFlags;
83 } HSE_TF_INFO, *LPHSE_TF_INFO;
84 BOOL PASCAL GetExtensionVersion(HSE_VERSION_INFO*);
85 DWORD PASCAL HttpExtensionProc(EXTENSION_CONTROL_BLOCK*);
86 BOOL PASCAL TerminateExtension(DWORD);
87 #ifdef __cplusplus
88 }
89 #endif
90 #endif /* _HTTPEXT_H */