/* * 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 #if (_WIN32_WINNT >= 0x0400) #include #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_ */