windows-nt/Source/XPSP1/NT/inetsrv/iis/iisrearc/iisplus/inc/ulatq.h
2020-09-26 16:20:57 +08:00

185 lines
3.6 KiB
C

/*++
Copyright (c) 1999-2000 Microsoft Corporation
Module Name:
ulatq.h
Abstract:
Exported ULATQ.DLL routines.
ULATQ contains the thread queue and UL support routines for
IISPLUS.
Author:
Taylor Weiss (TaylorW) 15-Dec-1999
Revision History:
--*/
#ifndef _ULATQ_H_
#define _ULATQ_H_
//
// The magic context that makes the world turn
//
typedef VOID* ULATQ_CONTEXT;
//
// Some callbacks specified by user of ULATQ to catch certain events
//
typedef VOID
(*PFN_ULATQ_NEW_REQUEST)
(
ULATQ_CONTEXT pContext
);
typedef VOID
(*PFN_ULATQ_IO_COMPLETION)
(
PVOID pvContext,
DWORD cbWritten,
DWORD dwCompletionStatus,
OVERLAPPED * lpo
);
typedef VOID
(*PFN_ULATQ_DISCONNECT)
(
PVOID pvContext
);
typedef VOID
(*PFN_ULATQ_ON_SHUTDOWN)
(
BOOL fImmediate
);
typedef HRESULT
(* PFN_ULATQ_COLLECT_PERF_COUNTERS)(
OUT PBYTE * ppCounterData,
OUT DWORD * pdwCounterData
);
typedef struct _ULATQ_CONFIG
{
PFN_ULATQ_IO_COMPLETION pfnIoCompletion;
PFN_ULATQ_NEW_REQUEST pfnNewRequest;
PFN_ULATQ_DISCONNECT pfnDisconnect;
PFN_ULATQ_ON_SHUTDOWN pfnOnShutdown;
PFN_ULATQ_COLLECT_PERF_COUNTERS pfnCollectCounters;
}
ULATQ_CONFIG, *PULATQ_CONFIG;
//
// ULATQ_CONTEXT properties
//
typedef enum
{
ULATQ_PROPERTY_COMPLETION_CONTEXT = 0,
ULATQ_PROPERTY_HTTP_REQUEST,
ULATQ_PROPERTY_APP_POOL_ID
} ULATQ_CONTEXT_PROPERTY_ID;
HRESULT
UlAtqInitialize(
INT argc,
LPWSTR argv[],
ULATQ_CONFIG * pConfig
);
HRESULT
UlAtqStartListen(
VOID
);
VOID
UlAtqTerminate(
HRESULT hrToSend
);
VOID *
UlAtqGetContextProperty(
ULATQ_CONTEXT pContext,
ULATQ_CONTEXT_PROPERTY_ID ContextPropertyId
);
VOID
UlAtqSetContextProperty(
ULATQ_CONTEXT pContext,
ULATQ_CONTEXT_PROPERTY_ID ContextPropertyId,
PVOID pvData
);
VOID
UlAtqFreeContext(
ULATQ_CONTEXT pContext
);
HRESULT
UlAtqSendEntityBody(
ULATQ_CONTEXT pContext,
BOOL fAsync,
DWORD dwFlags,
DWORD cChunks,
HTTP_DATA_CHUNK * pChunks,
DWORD *pcbSent,
HTTP_LOG_FIELDS_DATA *pUlLogData
);
HRESULT
UlAtqReceiveEntityBody(
ULATQ_CONTEXT pContext,
BOOL fAsync,
DWORD dwFlags,
VOID * pBuffer,
DWORD cbBuffer,
DWORD * pBytesReceived
);
HRESULT
UlAtqSendHttpResponse(
ULATQ_CONTEXT pContext,
BOOL fAsync,
DWORD dwFlags,
HTTP_RESPONSE * pResponse,
HTTP_CACHE_POLICY * pCachePolicy,
DWORD * pcbSent,
HTTP_LOG_FIELDS_DATA * pUlLogData
);
HRESULT
UlAtqWaitForDisconnect(
HTTP_CONNECTION_ID connectionId,
BOOL fAsync,
VOID * pvContext
);
HRESULT
UlAtqReceiveClientCertificate(
ULATQ_CONTEXT pContext,
BOOL fAsync,
BOOL fDoCertMap,
HTTP_SSL_CLIENT_CERT_INFO **ppClientCertInfo
);
HRESULT
UlAtqInduceShutdown(
BOOL fImmediate
);
HRESULT
UlAtqFlushUlCache(
WCHAR * pszURLPrefix
);
#endif // _ULATQ_H_