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