330 lines
12 KiB
C
330 lines
12 KiB
C
|
/*
|
||
|
* httpext.h HTTP server extension definitions
|
||
|
*
|
||
|
* =========================================================================
|
||
|
*
|
||
|
* Open Watcom Project
|
||
|
*
|
||
|
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
|
||
|
*
|
||
|
* This file is automatically generated. Do not edit directly.
|
||
|
*
|
||
|
* =========================================================================
|
||
|
*/
|
||
|
|
||
|
#ifndef _HTTPEXT_H_
|
||
|
#define _HTTPEXT_H_
|
||
|
|
||
|
#ifndef _ENABLE_AUTODEPEND
|
||
|
#pragma read_only_file;
|
||
|
#endif
|
||
|
|
||
|
#include <windows.h>
|
||
|
#if (_WIN32_WINNT >= 0x0400)
|
||
|
#include <wincrypt.h>
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* Connection handle */
|
||
|
typedef LPVOID HCONN;
|
||
|
|
||
|
/* Version numbers */
|
||
|
#define HSE_VERSION_MAJOR 7
|
||
|
#define HSE_VERSION_MINOR 5
|
||
|
#define HSE_VERSION MAKELONG( HSE_VERSION_MINOR, HSE_VERSION_MAJOR )
|
||
|
|
||
|
/* String lengths */
|
||
|
#define HSE_LOG_BUFFER_LEN 80
|
||
|
#define HSE_MAX_EXT_DLL_NAME_LEN 256
|
||
|
|
||
|
/* HTTP server extension status codes */
|
||
|
#define HSE_STATUS_SUCCESS 1
|
||
|
#define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2
|
||
|
#define HSE_STATUS_PENDING 3
|
||
|
#define HSE_STATUS_ERROR 4
|
||
|
|
||
|
/* HTTP server extension request codes */
|
||
|
#define HSE_REQ_BASE 0
|
||
|
#define HSE_REQ_SEND_URL_REDIRECT_RESP (HSE_REQ_BASE + 1)
|
||
|
#define HSE_REQ_SEND_URL (HSE_REQ_BASE + 2)
|
||
|
#define HSE_REQ_SEND_RESPONSE_HEADER (HSE_REQ_BASE + 3)
|
||
|
#define HSE_REQ_DONE_WITH_SESSION (HSE_REQ_BASE + 4)
|
||
|
#define HSE_REQ_END_RESERVED 1000
|
||
|
#define HSE_REQ_MAP_URL_TO_PATH (HSE_REQ_END_RESERVED + 1)
|
||
|
#define HSE_REQ_GET_SSPI_INFO (HSE_REQ_END_RESERVED + 2)
|
||
|
#define HSE_APPEND_LOG_PARAMETER (HSE_REQ_END_RESERVED + 3)
|
||
|
#define HSE_REQ_IO_COMPLETION (HSE_REQ_END_RESERVED + 5)
|
||
|
#define HSE_REQ_TRANSMIT_FILE (HSE_REQ_END_RESERVED + 6)
|
||
|
#define HSE_REQ_REFRESH_ISAPI_ACL (HSE_REQ_END_RESERVED + 7)
|
||
|
#define HSE_REQ_IS_KEEP_CONN (HSE_REQ_END_RESERVED + 8)
|
||
|
#define HSE_REQ_ASYNC_READ_CLIENT (HSE_REQ_END_RESERVED + 10)
|
||
|
#define HSE_REQ_GET_IMPERSONATION_TOKEN (HSE_REQ_END_RESERVED + 11)
|
||
|
#define HSE_REQ_MAP_URL_TO_PATH_EX (HSE_REQ_END_RESERVED + 12)
|
||
|
#define HSE_REQ_ABORTIVE_CLOSE (HSE_REQ_END_RESERVED + 14)
|
||
|
#define HSE_REQ_GET_CERT_INFO_EX (HSE_REQ_END_RESERVED + 15)
|
||
|
#define HSE_REQ_SEND_RESPONSE_HEADER_EX (HSE_REQ_END_RESERVED + 16)
|
||
|
#define HSE_REQ_CLOSE_CONNECTION (HSE_REQ_END_RESERVED + 17)
|
||
|
#define HSE_REQ_IS_CONNECTED (HSE_REQ_END_RESERVED + 18)
|
||
|
#define HSE_REQ_MAP_UNICODE_URL_TO_PATH (HSE_REQ_END_RESERVED + 23)
|
||
|
#define HSE_REQ_MAP_UNICODE_URL_TO_PATH_EX (HSE_REQ_END_RESERVED + 24)
|
||
|
#define HSE_REQ_EXEC_UNICODE_URL (HSE_REQ_END_RESERVED + 25)
|
||
|
#define HSE_REQ_EXEC_URL (HSE_REQ_END_RESERVED + 26)
|
||
|
#define HSE_REQ_GET_EXEC_URL_STATUS (HSE_REQ_END_RESERVED + 27)
|
||
|
#define HSE_REQ_SEND_CUSTOM_ERROR (HSE_REQ_END_RESERVED + 28)
|
||
|
#define HSE_REQ_IS_IN_PROGRESS (HSE_REQ_END_RESERVED + 30)
|
||
|
#define HSE_REQ_REPORT_UNHEALTHY (HSE_REQ_END_RESERVED + 32)
|
||
|
#define HSE_REQ_NORMALIZE_URL (HSE_REQ_END_RESERVED + 33)
|
||
|
#define HSE_REQ_VECTOR_SEND (HSE_REQ_END_RESERVED + 37)
|
||
|
#define HSE_REQ_GET_ANONYMOUS_TOKEN (HSE_REQ_END_RESERVED + 38)
|
||
|
#define HSE_REQ_GET_CACHE_INVALIDATION_CALLBACK (HSE_REQ_END_RESERVED + 40)
|
||
|
#define HSE_REQ_GET_UNICODE_ANONYMOUS_TOKEN (HSE_REQ_END_RESERVED + 41)
|
||
|
#define HSE_REQ_GET_TRACE_INFO (HSE_REQ_END_RESERVED + 42)
|
||
|
#define HSE_REQ_SET_FLUSH_FLAG (HSE_REQ_END_RESERVED + 43)
|
||
|
#define HSE_REQ_GET_TRACE_INFO_EX (HSE_REQ_END_RESERVED + 44)
|
||
|
#define HSE_REQ_RAISE_TRACE_EVENT (HSE_REQ_END_RESERVED + 45)
|
||
|
#define HSE_REQ_GET_CONFIG_OBJECT (HSE_REQ_END_RESERVED + 46)
|
||
|
#define HSE_REQ_GET_WORKER_PROCESS_SETTINGS (HSE_REQ_END_RESERVED + 47)
|
||
|
#define HSE_REQ_GET_PROTOCOL_MANAGER_CUSTOM_INTERFACE_CALLBACK (HSE_REQ_END_RESERVED + 48)
|
||
|
#define HSE_REQ_CANCEL_IO (HSE_REQ_END_RESERVED + 49)
|
||
|
#define HSE_REQ_GET_CHANNEL_BINDING_TOKEN (HSE_REQ_END_RESERVED + 50)
|
||
|
|
||
|
/* TerminateExtension() flags */
|
||
|
#define HSE_TERM_ADVISORY_UNLOAD 0x00000001L
|
||
|
#define HSE_TERM_MUST_UNLOAD 0x00000002L
|
||
|
|
||
|
/* I/O flags */
|
||
|
#define HSE_IO_SYNC 0x00000001L
|
||
|
#define HSE_IO_ASYNC 0x00000002L
|
||
|
#define HSE_IO_DISCONNECT_AFTER_SEND 0x00000004L
|
||
|
#define HSE_IO_SEND_HEADERS 0x00000008L
|
||
|
#define HSE_IO_FINAL_SEND 0x00000010L
|
||
|
#define HSE_IO_CACHE_RESPONSE 0x00000020L
|
||
|
#define HSE_IO_TRY_SKIP_CUSTOM_ERRORS 0x00000040L
|
||
|
#define HSE_IO_NODELAY 0x00001000L
|
||
|
|
||
|
/* URL flags */
|
||
|
#define HSE_URL_FLAGS_READ 0x00000001L
|
||
|
#define HSE_URL_FLAGS_WRITE 0x00000002L
|
||
|
#define HSE_URL_FLAGS_EXECUTE 0x00000004L
|
||
|
#define HSE_URL_FLAGS_SSL 0x00000008L
|
||
|
#define HSE_URL_FLAGS_DONT_CACHE 0x00000010L
|
||
|
#define HSE_URL_FLAGS_NEGO_CERT 0x00000020L
|
||
|
#define HSE_URL_FLAGS_REQUIRE_CERT 0x00000040L
|
||
|
#define HSE_URL_FLAGS_MAP_CERT 0x00000080L
|
||
|
#define HSE_URL_FLAGS_SSL128 0x00000100L
|
||
|
#define HSE_URL_FLAGS_SCRIPT 0x00000200L
|
||
|
#define HSE_URL_FLAGS_MASK 0x000003FFL
|
||
|
|
||
|
/* HSE_REQ_EXEC_URL flags */
|
||
|
#define HSE_EXEC_URL_NO_HEADERS 0x00000002L
|
||
|
#define HSE_EXEC_URL_IGNORE_CURRENT_INTERCEPTOR 0x00000004L
|
||
|
#define HSE_EXEC_URL_IGNORE_VALIDATION_AND_RANGE 0x00000010L
|
||
|
#define HSE_EXEC_URL_DISABLE_CUSTOM_ERROR 0x00000020L
|
||
|
#define HSE_EXEC_URL_SSI_CMD 0x00000040L
|
||
|
#define HSE_EXEC_URL_HTTP_CACHE_ELIGIBLE 0x00000080L
|
||
|
|
||
|
/* Vector element types */
|
||
|
#define HSE_VECTOR_ELEMENT_TYPE_MEMORY_BUFFER 0L
|
||
|
#define HSE_VECTOR_ELEMENT_TYPE_FILE_HANDLE 1L
|
||
|
|
||
|
/* Application type flags */
|
||
|
#define HSE_APP_FLAG_IN_PROCESS 0L
|
||
|
#define HSE_APP_FLAG_ISOLATED_OOP 1L
|
||
|
#define HSE_APP_FLAG_POOLED_OOP 2L
|
||
|
|
||
|
/* GetExtensionVersion() parameters */
|
||
|
typedef struct _HSE_VERSION_INFO {
|
||
|
DWORD dwExtensionVersion;
|
||
|
CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
|
||
|
} HSE_VERSION_INFO;
|
||
|
typedef HSE_VERSION_INFO *LPHSE_VERSION_INFO;
|
||
|
|
||
|
/* Extension control block */
|
||
|
typedef struct _EXTENSION_CONTROL_BLOCK {
|
||
|
DWORD cbSize;
|
||
|
DWORD dwVersion;
|
||
|
HCONN ConnID;
|
||
|
DWORD dwHttpStatusCode;
|
||
|
CHAR lpszLogData[HSE_LOG_BUFFER_LEN];
|
||
|
LPSTR lpszMethod;
|
||
|
LPSTR lpszQueryString;
|
||
|
LPSTR lpszPathInfo;
|
||
|
LPSTR lpszPathTranslated;
|
||
|
DWORD cbTotalBytes;
|
||
|
DWORD cbAvailable;
|
||
|
LPBYTE lpbData;
|
||
|
LPSTR lpszContentType;
|
||
|
BOOL (WINAPI *GetServerVariable)( HCONN, LPSTR, LPVOID, LPDWORD );
|
||
|
BOOL (WINAPI *WriteClient)( HCONN, LPVOID, LPDWORD, DWORD );
|
||
|
BOOL (WINAPI *ReadClient)( HCONN, LPVOID, LPDWORD );
|
||
|
BOOL (WINAPI *ServerSupportFunction)( HCONN, DWORD, LPVOID, LPDWORD, LPDWORD );
|
||
|
} EXTENSION_CONTROL_BLOCK;
|
||
|
typedef EXTENSION_CONTROL_BLOCK *LPEXTENSION_CONTROL_BLOCK;
|
||
|
|
||
|
/* Extended URL mapping information */
|
||
|
typedef struct _HSE_URL_MAPEX_INFO {
|
||
|
CHAR lpszPath[MAX_PATH];
|
||
|
DWORD dwFlags;
|
||
|
DWORD cchMatchingPath;
|
||
|
DWORD cchMatchingURL;
|
||
|
DWORD dwReserved1;
|
||
|
DWORD dwReserved2;
|
||
|
} HSE_URL_MAPEX_INFO;
|
||
|
typedef HSE_URL_MAPEX_INFO *LPHSE_URL_MAPEX_INFO;
|
||
|
|
||
|
/* Unicode extended URL mapping information */
|
||
|
typedef struct _HSE_UNICODE_URL_MAPEX_INFO {
|
||
|
WCHAR lpszPath[MAX_PATH];
|
||
|
DWORD dwFlags;
|
||
|
DWORD cchMatchingPath;
|
||
|
DWORD cchMatchingURL;
|
||
|
} HSE_UNICODE_URL_MAPEX_INFO;
|
||
|
typedef HSE_UNICODE_URL_MAPEX_INFO *LPHSE_UNICODE_URL_MAPEX_INFO;
|
||
|
|
||
|
/* I/O completion callback */
|
||
|
typedef VOID (WINAPI *PFN_HSE_IO_COMPLETION)( EXTENSION_CONTROL_BLOCK *, PVOID, DWORD, DWORD );
|
||
|
|
||
|
/* HSE_REQ_TRANSMIT_FILE parameters */
|
||
|
typedef struct _HSE_TF_INFO {
|
||
|
PFN_HSE_IO_COMPLETION pfnHseIO;
|
||
|
PVOID pContext;
|
||
|
HANDLE hFile;
|
||
|
LPCSTR pszStatusCode;
|
||
|
DWORD BytesToWrite;
|
||
|
DWORD Offset;
|
||
|
PVOID pHead;
|
||
|
DWORD HeadLength;
|
||
|
PVOID pTail;
|
||
|
DWORD TailLength;
|
||
|
DWORD dwFlags;
|
||
|
} HSE_TF_INFO;
|
||
|
typedef HSE_TF_INFO *LPHSE_TF_INFO;
|
||
|
|
||
|
/* Extended send header information */
|
||
|
typedef struct _HSE_SEND_HEADER_EX_INFO {
|
||
|
LPCSTR pszStatus;
|
||
|
LPCSTR pszHeader;
|
||
|
DWORD cchStatus;
|
||
|
DWORD cchHeader;
|
||
|
BOOL fKeepConn;
|
||
|
} HSE_SEND_HEADER_EX_INFO;
|
||
|
typedef HSE_SEND_HEADER_EX_INFO *LPHSE_SEND_HEADER_EX_INFO;
|
||
|
|
||
|
/* HSE_REQ_EXEC_URL user information */
|
||
|
typedef struct _HSE_EXEC_URL_USER_INFO {
|
||
|
HANDLE hImpersonationToken;
|
||
|
LPSTR pszCustomUserName;
|
||
|
LPSTR pszCustomAuthType;
|
||
|
} HSE_EXEC_URL_USER_INFO;
|
||
|
typedef HSE_EXEC_URL_USER_INFO *LPHSE_EXEC_URL_USER_INFO;
|
||
|
|
||
|
/* HSE_REQ_EXEC_URL entity information */
|
||
|
typedef struct _HSE_EXEC_URL_ENTITY_INFO {
|
||
|
DWORD cbAvailable;
|
||
|
LPVOID lpbData;
|
||
|
} HSE_EXEC_URL_ENTITY_INFO;
|
||
|
typedef HSE_EXEC_URL_ENTITY_INFO *LPHSE_EXEC_URL_ENTITY_INFO;
|
||
|
|
||
|
/* HSE_REQ_EXEC_URL status */
|
||
|
typedef struct _HSE_EXEC_URL_STATUS {
|
||
|
USHORT uHttpStatusCode;
|
||
|
USHORT uHttpSubStatus;
|
||
|
DWORD dwWin32Error;
|
||
|
} HSE_EXEC_URL_STATUS;
|
||
|
typedef HSE_EXEC_URL_STATUS *LPHSE_EXEC_URL_STATUS;
|
||
|
|
||
|
/* HSE_REQ_EXEC_URL parameters */
|
||
|
typedef struct _HSE_EXEC_URL_INFO {
|
||
|
LPSTR pszUrl;
|
||
|
LPSTR pszMethod;
|
||
|
LPSTR pszChildHeaders;
|
||
|
LPHSE_EXEC_URL_USER_INFO pUserInfo;
|
||
|
LPHSE_EXEC_URL_ENTITY_INFO pEntity;
|
||
|
DWORD dwExecUrlFlags;
|
||
|
} HSE_EXEC_URL_FLAGS;
|
||
|
typedef HSE_EXEC_URL_FLAGS *LPHSE_EXEC_URL_FLAGS;
|
||
|
|
||
|
/* HSE_REQ_EXEC_UNICODE_URL user information */
|
||
|
typedef struct _HSE_EXEC_UNICODE_URL_USER_INFO {
|
||
|
HANDLE hImpersonationToken;
|
||
|
LPWSTR pszCustomUserName;
|
||
|
LPSTR pszCustomAuthType;
|
||
|
} HSE_EXEC_UNICODE_URL_USER_INFO;
|
||
|
typedef HSE_EXEC_UNICODE_URL_USER_INFO *LPHSE_EXEC_UNICODE_URL_USER_INFO;
|
||
|
|
||
|
/* HSE_REQ_EXEC_UNICODE_URL parameters */
|
||
|
typedef struct _HSE_EXEC_UNICODE_URL_INFO {
|
||
|
LPWSTR pszUrl;
|
||
|
LPSTR pszMethod;
|
||
|
LPSTR pszChildHeaders;
|
||
|
LPHSE_EXEC_UNICODE_URL_USER_INFO pUserInfo;
|
||
|
LPHSE_EXEC_URL_ENTITY_INFO pEntity;
|
||
|
DWORD dwExecUrlFlags;
|
||
|
} HSE_EXEC_UNICODE_URL_INFO;
|
||
|
typedef HSE_EXEC_UNICODE_URL_INFO *LPHSE_EXEC_UNICODE_URL_INFO;
|
||
|
|
||
|
/* Custom error information */
|
||
|
typedef struct _HSE_CUSTOM_ERROR_INFO {
|
||
|
CHAR *pszStatus;
|
||
|
USHORT uHttpSubError;
|
||
|
BOOL fAsync;
|
||
|
} HSE_CUSTOM_ERROR_INFO;
|
||
|
typedef HSE_CUSTOM_ERROR_INFO *LPHSE_CUSTOM_ERROR_INFO;
|
||
|
|
||
|
/* Vector element */
|
||
|
typedef struct _HSE_VECTOR_ELEMENT {
|
||
|
DWORD ElementType;
|
||
|
PVOID pvContext;
|
||
|
ULONGLONG cbOffset;
|
||
|
ULONGLONG cbSize;
|
||
|
} HSE_VECTOR_ELEMENT;
|
||
|
typedef HSE_VECTOR_ELEMENT *LPHSE_VECTOR_ELEMENT;
|
||
|
|
||
|
/* Response vector */
|
||
|
typedef struct _HSE_RESPONSE_VECTOR {
|
||
|
DWORD dwFlags;
|
||
|
LPSTR pszStatus;
|
||
|
LPSTR pszHeaders;
|
||
|
DWORD nElementCount;
|
||
|
LPHSE_VECTOR_ELEMENT lpElementArray;
|
||
|
} HSE_RESPONSE_VECTOR;
|
||
|
typedef HSE_RESPONSE_VECTOR *LPHSE_RESPONSE_VECTOR;
|
||
|
|
||
|
/* Cache invalidation callback */
|
||
|
typedef HRESULT (WINAPI *PFN_HSE_CACHE_INVALIDATION_CALLBACK)( WCHAR * );
|
||
|
|
||
|
/* Certificate context (extended version) */
|
||
|
#if (_WIN32_WINNT >= 0x0400)
|
||
|
typedef struct _CERT_CONTEXT_EX {
|
||
|
CERT_CONTEXT CertContext;
|
||
|
DWORD cbAllocated;
|
||
|
DWORD dwCertificateFlags;
|
||
|
} CERT_CONTEXT_EX;
|
||
|
#endif
|
||
|
|
||
|
/* Trace information */
|
||
|
typedef struct _HSE_TRACE_INFO {
|
||
|
BOOL fTraceRequest;
|
||
|
BYTE TraceContextId[16];
|
||
|
DWORD dwReserved1;
|
||
|
DWORD dwReserved2;
|
||
|
} HSE_TRACE_INFO;
|
||
|
typedef HSE_TRACE_INFO *LPHSE_TRACE_INFO;
|
||
|
|
||
|
/* Custom interface callback */
|
||
|
typedef HRESULT (WINAPI *PFN_HSE_GET_PROTOCOL_MANAGER_CUSTOM_INTERFACE_CALLBACK)( LPCWSTR, LPCWSTR, DWORD, PVOID * );
|
||
|
|
||
|
/* Functions exported by HTTP server extensions */
|
||
|
BOOL WINAPI GetExtensionVersion( HSE_VERSION_INFO * );
|
||
|
DWORD WINAPI HttpExtensionProc( EXTENSION_CONTROL_BLOCK * );
|
||
|
BOOL WINAPI TerminateExtension( DWORD );
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
} /* extern "C" */
|
||
|
#endif
|
||
|
|
||
|
#endif /* _HTTPEXT_H_ */
|