2025-04-27 07:49:33 -04:00

238 lines
8.1 KiB
Plaintext

/*===================================================================
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
{
DWORD cbBuffer;
[size_is(cbBuffer)] BYTE * pbBuffer;
} RESPONSE_BUFFER;
typedef struct
{
DWORD cBuffers;
[size_is(cBuffers)] RESPONSE_BUFFER * rgBuffers;
} RESPONSE_INFO;
typedef struct
{
#ifdef _WIN64
UINT64 hImpersonationToken;
#else
DWORD_PTR hImpersonationToken;
#endif
[string] LPSTR pszUserName;
[string] LPSTR pszAuthType;
} EXEC_URL_USER_INFO;
typedef struct
{
DWORD cbAvailable;
[size_is(cbAvailable)] BYTE * lpbData;
} EXEC_URL_ENTITY_INFO;
typedef struct
{
[string] LPSTR pszUrl;
[string] LPSTR pszMethod;
[string] LPSTR pszChildHeaders;
EXEC_URL_USER_INFO * pUserInfo;
EXEC_URL_ENTITY_INFO * pEntity;
DWORD dwExecUrlFlags;
} EXEC_URL_INFO;
typedef struct
{
[unique,size_is(cbBufSize)] BYTE * pBuffer;
DWORD cbBufSize;
#ifdef _WIN64
UINT64 hFile;
#else
DWORD_PTR hFile;
#endif
ULONGLONG cbOffset;
ULONGLONG cbFileSize;
} 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
);
[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
);
[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
);
[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
);
[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 QueryVrToken")]
HRESULT QueryVrToken(
[in,size_is(cbUrl)] BYTE * szUrl,
[in] DWORD cbUrl,
[out] DWORD64 * pToken,
[in] BOOL fUnicode
);
};