You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
301 lines
11 KiB
301 lines
11 KiB
/*===================================================================
|
|
Microsoft IIS 6
|
|
|
|
Microsoft Confidential.
|
|
Copyright 2000 Microsoft Corporation. All Rights Reserved.
|
|
|
|
Component: IDL
|
|
|
|
File: IIsapiCore.idl - ISAPI Core Interface
|
|
|
|
===================================================================*/
|
|
import "basetsd.idl";
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
|
|
[
|
|
uuid(928f6bd4-bd84-48f0-a55c-b71d1f515af2),
|
|
|
|
helpstring("ISAPI Core Interface"),
|
|
pointer_default(unique)
|
|
]
|
|
interface IIsapiCore : IUnknown
|
|
{
|
|
typedef struct _RESPONSE_BUFFER
|
|
{
|
|
DWORD cbBuffer;
|
|
[size_is(cbBuffer)] BYTE * pbBuffer;
|
|
} RESPONSE_BUFFER;
|
|
|
|
typedef struct _RESPONSE_INFO
|
|
{
|
|
DWORD cBuffers;
|
|
[size_is(cBuffers)] RESPONSE_BUFFER * rgBuffers;
|
|
} RESPONSE_INFO;
|
|
|
|
typedef struct _EXEC_URL_USER_INFO
|
|
{
|
|
#ifdef _WIN64
|
|
UINT64 hImpersonationToken;
|
|
#else
|
|
DWORD_PTR hImpersonationToken;
|
|
#endif
|
|
BOOL fIsUserNameUnicode;
|
|
[size_is(cbUserName)] BYTE * pszUserName;
|
|
DWORD cbUserName;
|
|
[string] LPSTR pszAuthType;
|
|
} EXEC_URL_USER_INFO;
|
|
|
|
typedef struct _EXEC_URL_ENTITY_INFO
|
|
{
|
|
DWORD cbAvailable;
|
|
[size_is(cbAvailable)] BYTE * lpbData;
|
|
} EXEC_URL_ENTITY_INFO;
|
|
|
|
typedef struct _EXEC_URL_INFO
|
|
{
|
|
BOOL fIsUrlUnicode;
|
|
[size_is(cbUrl)] BYTE * pszUrl;
|
|
DWORD cbUrl;
|
|
[string] LPSTR pszMethod;
|
|
[string] LPSTR pszChildHeaders;
|
|
EXEC_URL_USER_INFO * pUserInfo;
|
|
EXEC_URL_ENTITY_INFO * pEntity;
|
|
DWORD dwExecUrlFlags;
|
|
} EXEC_URL_INFO;
|
|
|
|
typedef struct _VECTOR_ELEMENT
|
|
{
|
|
[unique,size_is(cbBufSize)] BYTE * pBuffer;
|
|
DWORD cbBufSize;
|
|
#ifdef _WIN64
|
|
UINT64 hFile;
|
|
#else
|
|
DWORD_PTR hFile;
|
|
#endif
|
|
ULONGLONG cbOffset;
|
|
ULONGLONG cbFileSize;
|
|
[unique,string] WCHAR * pszFragmentName;
|
|
} VECTOR_ELEMENT;
|
|
|
|
[helpstring("method GetServerVariable")]
|
|
HRESULT GetServerVariable(
|
|
[in,string] LPSTR szVariableName,
|
|
[in,out,size_is(cbBuffer),unique] BYTE * szBuffer,
|
|
[in] DWORD cbBuffer,
|
|
[out] DWORD * pcbBufferRequired
|
|
);
|
|
|
|
[helpstring("method ReadClient")]
|
|
HRESULT ReadClient(
|
|
[in] DWORD64 IsaContext,
|
|
[in,out,unique,size_is(cbBuffer)] BYTE * pBuffer,
|
|
[in] DWORD cbBuffer,
|
|
[in] DWORD dwBytesToRead,
|
|
[out] DWORD * pdwSyncBytesRead,
|
|
[in] DWORD dwFlags
|
|
);
|
|
|
|
[helpstring("method WriteClient")]
|
|
HRESULT WriteClient(
|
|
[in] DWORD64 IsaContext,
|
|
[in,size_is(cbBuffer)] BYTE * pBuffer,
|
|
[in] DWORD cbBuffer,
|
|
[in] DWORD dwFlags
|
|
);
|
|
|
|
[helpstring("method SendResponseHeaders")]
|
|
HRESULT SendResponseHeaders(
|
|
[in] BOOL fDisconnect,
|
|
[in,string,unique] LPSTR szStatus,
|
|
[in,string,unique] LPSTR szHeaders,
|
|
[in] DWORD dwFlags
|
|
);
|
|
|
|
[helpstring("method MapPath")]
|
|
HRESULT MapPath(
|
|
[in,out,size_is(cbPath)] BYTE * szPath,
|
|
[in] DWORD cbPath,
|
|
[out] DWORD * pcbBufferRequired,
|
|
[in] BOOL fUnicode
|
|
);
|
|
|
|
[helpstring("method MapPathEx")]
|
|
HRESULT MapPathEx(
|
|
[in,size_is(cbUrl)] BYTE * szUrl,
|
|
[in] DWORD cbUrl,
|
|
[in,out,size_is(cbPath)] BYTE * szPath,
|
|
[in] DWORD cbPath,
|
|
[in,out] DWORD * pcbBufferRequired,
|
|
[out] DWORD * pcchMatchingPath,
|
|
[out] DWORD * pcchMatchingUrl,
|
|
[out] DWORD * pdwFlags,
|
|
[in] BOOL fUnicode
|
|
);
|
|
|
|
[helpstring("method TransmitFile")]
|
|
HRESULT TransmitFile(
|
|
[in] DWORD64 IsaContext,
|
|
#ifdef _WIN64
|
|
[in] UINT64 hFile,
|
|
#else
|
|
[in] DWORD_PTR hFile,
|
|
#endif
|
|
[in] DWORD64 cbOffset,
|
|
[in] DWORD64 cbWrite,
|
|
[in,string,unique] LPSTR szStatusCode,
|
|
[in,size_is(cbHead),unique] BYTE * pHead,
|
|
[in] DWORD cbHead,
|
|
[in,size_is(cbTail),unique] BYTE * pTail,
|
|
[in] DWORD cbTail,
|
|
[in] DWORD dwFlags
|
|
);
|
|
|
|
[helpstring("method SetConnectionClose")]
|
|
HRESULT SetConnectionClose(
|
|
[in] BOOL fClose
|
|
);
|
|
|
|
[helpstring("method SendRedirect")]
|
|
HRESULT SendRedirect(
|
|
[in,string] LPCSTR szLocation,
|
|
[in] BOOL fDisconnect
|
|
);
|
|
|
|
[helpstring("method GetCertificateInfoEx")]
|
|
HRESULT GetCertificateInfoEx(
|
|
[in] DWORD cbAllocated,
|
|
[out] DWORD * pdwCertEncodingType,
|
|
[out,size_is(cbAllocated)] BYTE * pbCertEncoded,
|
|
[out] DWORD * pcbCertEncoded,
|
|
[out] DWORD * pdwCertificateFlags
|
|
);
|
|
|
|
[helpstring("method AppendLog")]
|
|
HRESULT AppendLog(
|
|
[in,string] LPSTR szExtraParam,
|
|
[in] USHORT StatusCode
|
|
);
|
|
|
|
[helpstring("method ExecuteUrl")]
|
|
HRESULT ExecuteUrl(
|
|
[in] DWORD64 IsaContext,
|
|
[in] EXEC_URL_INFO * pExecUrlInfo
|
|
);
|
|
|
|
[helpstring("method GetExecuteUrlStatus")]
|
|
HRESULT GetExecuteUrlStatus(
|
|
[out] USHORT * pChildStatusCode,
|
|
[out] USHORT * pChildSubErrorCode,
|
|
[out] DWORD * pChildWin32Error
|
|
);
|
|
|
|
[helpstring("method SendCustomError")]
|
|
HRESULT SendCustomError(
|
|
[in] DWORD64 IsaContext,
|
|
[in,string,unique] LPSTR szStatus,
|
|
[in] USHORT uHttpSubError
|
|
);
|
|
|
|
[helpstring("method VectorSend")]
|
|
HRESULT VectorSend(
|
|
[in] DWORD64 IsaContext,
|
|
[in] BOOL fDisconnect,
|
|
[in,unique,string] LPSTR pszStatus,
|
|
[in,unique,string] LPSTR pszHeaders,
|
|
[in,unique,size_is(nElementCount)] VECTOR_ELEMENT *pElements,
|
|
[in] DWORD nElementCount,
|
|
[in] BOOL fFinalSend,
|
|
[in] BOOL fCacheResponse
|
|
);
|
|
|
|
[helpstring("method GetCustomError")]
|
|
HRESULT GetCustomError(
|
|
[in] DWORD dwError,
|
|
[in] DWORD dwSubError,
|
|
[in] DWORD dwBufferSize,
|
|
[in, out, size_is(dwBufferSize)] BYTE *pvBuffer,
|
|
[out] DWORD *pdwRequiredBufferSize,
|
|
[out] BOOL *pfIsFileError,
|
|
[out] BOOL *pfSendErrorBody
|
|
);
|
|
|
|
[helpstring("method TestConnection")]
|
|
HRESULT TestConnection(
|
|
[out] BOOL *pfIsConnected
|
|
);
|
|
|
|
// GetSspiInfo only works inproc - the returned handles won't work OOP
|
|
[helpstring("method GetSspiInfo")]
|
|
HRESULT GetSspiInfo(
|
|
[out,size_is(cbCredHandle)] BYTE * pCredHandle,
|
|
[in] DWORD cbCredHandle,
|
|
[out,size_is(cbCtxtHandle)] BYTE * pCtxtHandle,
|
|
[in] DWORD cbCtxtHandle
|
|
);
|
|
|
|
[helpstring("method QueryToken")]
|
|
HRESULT QueryToken(
|
|
[in,size_is(cbUrl)] BYTE * szUrl,
|
|
[in] DWORD cbUrl,
|
|
[in] DWORD dwTokenType,
|
|
[out] DWORD64 * pToken,
|
|
[in] BOOL fUnicode
|
|
);
|
|
|
|
[helpstring("method ReportAsUnhealthy")]
|
|
HRESULT ReportAsUnhealthy(
|
|
[in,size_is(cbImage)] BYTE * szImage,
|
|
[in] DWORD cbImage,
|
|
[in,unique,size_is(cbReason)] BYTE * szReason,
|
|
[in] DWORD cbReason
|
|
);
|
|
|
|
[helpstring("method AddFragmentToCache")]
|
|
HRESULT
|
|
AddFragmentToCache(
|
|
[in] VECTOR_ELEMENT * pVectorElement,
|
|
[in,string] WCHAR * pszFragmentName
|
|
);
|
|
|
|
[helpstring("method ReadFragmentFromCache")]
|
|
HRESULT
|
|
ReadFragmentFromCache(
|
|
[in,string] WCHAR * pszFragmentName,
|
|
[in,out,size_is(cbSize)] BYTE * pvBuffer,
|
|
[in] DWORD cbSize,
|
|
[out] DWORD * pcbCopied
|
|
);
|
|
|
|
[helpstring("method RemoveFragmentFromCache")]
|
|
HRESULT
|
|
RemoveFragmentFromCache(
|
|
[in,string] WCHAR * pszFragmentName
|
|
);
|
|
|
|
[helpstring("method GetMetadataProperty")]
|
|
HRESULT
|
|
GetMetadataProperty(
|
|
[in] DWORD dwPropertyId,
|
|
[in,out,size_is(cbBuffer)] BYTE * pvBuffer,
|
|
[in] DWORD cbBuffer,
|
|
[out] DWORD * pcbBufferRequired
|
|
);
|
|
|
|
[helpstring("method GetCacheInvalidationCallback")]
|
|
HRESULT
|
|
GetCacheInvalidationCallback(
|
|
[out] DWORD64 *pfnCallback
|
|
);
|
|
|
|
[helpstring("method CloseConnection")]
|
|
HRESULT CloseConnection();
|
|
|
|
[helpstring("method AllocateMemory")]
|
|
HRESULT
|
|
AllocateMemory(
|
|
[in] DWORD cbSize,
|
|
[out] DWORD64 * pvBlock
|
|
);
|
|
};
|
|
|