238 lines
8.1 KiB
Plaintext
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
|
|
);
|
|
};
|
|
|
|
|
|
|