windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/wam/idl/wam.idl
2020-09-26 16:20:57 +08:00

153 lines
4.2 KiB
Plaintext

/*===================================================================
Microsoft Denali
Microsoft Confidential.
Copyright 1997 Microsoft Corporation. All Rights Reserved.
Component: IDL
File: wam.idl
===================================================================*/
import "oaidl.idl";
import "ocidl.idl";
import "iwr.idl";
/*------------------------------------------------------------
* Statistics Object exchanged between IIS & WAM
------------------------------------------------------------*/
typedef struct _WAM_STATISTICS_0 {
DWORD CurrentWamRequests;
DWORD MaxWamRequests;
DWORD TotalWamRequests;
DWORD TimeOfLastClear;
} WAM_STATISTICS_0;
typedef WAM_STATISTICS_0 * PWAM_STATISTICS_0;
typedef [switch_type(unsigned long)] union _WAM_STATISTICS_INFO
{
[case(0)]
WAM_STATISTICS_0 WamStats0;
[default]
;
} WAM_STATISTICS_INFO, * LPWAM_STATISTICS_INFO;
[
uuid(888ADDCF-9993-11D0-A539-00A0C922E798),
helpstring("IWam Interface"),
pointer_default(unique)
]
interface IWam : IUnknown
{
// For OOP applications we will pass in the core state
// on the ProcessRequest call. For IP applications it
// is NULL
typedef struct
{
DWORD cbCoreState;
[size_is(cbCoreState)] unsigned char * pbCoreState;
DWORD cbFixedCore;
[size_is(cbFixedCore)] unsigned char * pbFixedCore;
// Temporarily use a separate buffer for the sv data
DWORD cbServerVarData;
[size_is(cbServerVarData)]
unsigned char * pbServerVarData;
DWORD cbServerVars;
[size_is(cbServerVars)]
unsigned char * pbServerVarCache;
} OOP_CORE_STATE;
[helpstring("method InitWam")]
HRESULT InitWam
(
[in] BOOL fInProcess, // are we in-proc or out-of-proc?
[in] BOOL fInPool, // !Isolated
[in] BOOL fEnableTryExcept, // catch exceptions in ISAPI calls?
[in] int pt, // PLATFORM_TYPE - are we running on Win95?
[out] DWORD *pPID // Returned ProcessId of created process
);
[helpstring("method StartShutdown")]
HRESULT StartShutdown
(
);
[helpstring("method UninitWam")]
HRESULT UninitWam
(
);
[helpstring("method ProcessRequest")]
HRESULT ProcessRequest
(
[in] IWamRequest * pIWamRequest,
[in] DWORD cbWrcStrings,
[in, unique] OOP_CORE_STATE * pOopCoreState,
[out] BOOL * pfHandled
);
[helpstring("method ProcessAsyncIO")]
HRESULT ProcessAsyncIO
(
#ifdef _WIN64
[in] UINT64 pWamExecInfoIn, // WAM_EXEC_INFO *
#else
[in] DWORD_PTR pWamExecInfoIn, // WAM_EXEC_INFO *
#endif
[in] DWORD dwStatus,
[in] DWORD cbWritten
);
[helpstring("method ProcessAsyncReadOop")]
HRESULT ProcessAsyncReadOop
(
#ifdef _WIN64
[in] UINT64 pWamExecInfoIn, // WAM_EXEC_INFO *
#else
[in] DWORD_PTR pWamExecInfoIn, // WAM_EXEC_INFO *
#endif
[in] DWORD dwStatus,
[in] DWORD cbRead,
[in, size_is(cbRead)] unsigned char * lpDataRead
);
[helpstring("get statistics")]
HRESULT GetStatistics
(
[in] DWORD Level,
[out, switch_is(Level)] LPWAM_STATISTICS_INFO pWamStatsInfo
);
};
[
uuid(888ADDC0-9993-11D0-A539-00A0C922E798),
version(1.0),
helpstring("Wam 1.0 Type Library")
]
library WAMLib
{
importlib("stdole2.tlb");
[
uuid(888ADDD0-9993-11D0-A539-00A0C922E798),
helpstring("Wam object class")
]
coclass Wam
{
[default] interface IWam;
};
};