/*=================================================================== 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 ); };