Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
4.2 KiB

  1. /*===================================================================
  2. Microsoft Denali
  3. Microsoft Confidential.
  4. Copyright 1997 Microsoft Corporation. All Rights Reserved.
  5. Component: IDL
  6. File: wam.idl
  7. ===================================================================*/
  8. import "oaidl.idl";
  9. import "ocidl.idl";
  10. import "iwr.idl";
  11. /*------------------------------------------------------------
  12. * Statistics Object exchanged between IIS & WAM
  13. ------------------------------------------------------------*/
  14. typedef struct _WAM_STATISTICS_0 {
  15. DWORD CurrentWamRequests;
  16. DWORD MaxWamRequests;
  17. DWORD TotalWamRequests;
  18. DWORD TimeOfLastClear;
  19. } WAM_STATISTICS_0;
  20. typedef WAM_STATISTICS_0 * PWAM_STATISTICS_0;
  21. typedef [switch_type(unsigned long)] union _WAM_STATISTICS_INFO
  22. {
  23. [case(0)]
  24. WAM_STATISTICS_0 WamStats0;
  25. [default]
  26. ;
  27. } WAM_STATISTICS_INFO, * LPWAM_STATISTICS_INFO;
  28. [
  29. uuid(888ADDCF-9993-11D0-A539-00A0C922E798),
  30. helpstring("IWam Interface"),
  31. pointer_default(unique)
  32. ]
  33. interface IWam : IUnknown
  34. {
  35. // For OOP applications we will pass in the core state
  36. // on the ProcessRequest call. For IP applications it
  37. // is NULL
  38. typedef struct
  39. {
  40. DWORD cbCoreState;
  41. [size_is(cbCoreState)] unsigned char * pbCoreState;
  42. DWORD cbFixedCore;
  43. [size_is(cbFixedCore)] unsigned char * pbFixedCore;
  44. // Temporarily use a separate buffer for the sv data
  45. DWORD cbServerVarData;
  46. [size_is(cbServerVarData)]
  47. unsigned char * pbServerVarData;
  48. DWORD cbServerVars;
  49. [size_is(cbServerVars)]
  50. unsigned char * pbServerVarCache;
  51. } OOP_CORE_STATE;
  52. [helpstring("method InitWam")]
  53. HRESULT InitWam
  54. (
  55. [in] BOOL fInProcess, // are we in-proc or out-of-proc?
  56. [in] BOOL fInPool, // !Isolated
  57. [in] BOOL fEnableTryExcept, // catch exceptions in ISAPI calls?
  58. [in] int pt, // PLATFORM_TYPE - are we running on Win95?
  59. [out] DWORD *pPID // Returned ProcessId of created process
  60. );
  61. [helpstring("method StartShutdown")]
  62. HRESULT StartShutdown
  63. (
  64. );
  65. [helpstring("method UninitWam")]
  66. HRESULT UninitWam
  67. (
  68. );
  69. [helpstring("method ProcessRequest")]
  70. HRESULT ProcessRequest
  71. (
  72. [in] IWamRequest * pIWamRequest,
  73. [in] DWORD cbWrcStrings,
  74. [in, unique] OOP_CORE_STATE * pOopCoreState,
  75. [out] BOOL * pfHandled
  76. );
  77. [helpstring("method ProcessAsyncIO")]
  78. HRESULT ProcessAsyncIO
  79. (
  80. #ifdef _WIN64
  81. [in] UINT64 pWamExecInfoIn, // WAM_EXEC_INFO *
  82. #else
  83. [in] DWORD_PTR pWamExecInfoIn, // WAM_EXEC_INFO *
  84. #endif
  85. [in] DWORD dwStatus,
  86. [in] DWORD cbWritten
  87. );
  88. [helpstring("method ProcessAsyncReadOop")]
  89. HRESULT ProcessAsyncReadOop
  90. (
  91. #ifdef _WIN64
  92. [in] UINT64 pWamExecInfoIn, // WAM_EXEC_INFO *
  93. #else
  94. [in] DWORD_PTR pWamExecInfoIn, // WAM_EXEC_INFO *
  95. #endif
  96. [in] DWORD dwStatus,
  97. [in] DWORD cbRead,
  98. [in, size_is(cbRead)] unsigned char * lpDataRead
  99. );
  100. [helpstring("get statistics")]
  101. HRESULT GetStatistics
  102. (
  103. [in] DWORD Level,
  104. [out, switch_is(Level)] LPWAM_STATISTICS_INFO pWamStatsInfo
  105. );
  106. };
  107. [
  108. uuid(888ADDC0-9993-11D0-A539-00A0C922E798),
  109. version(1.0),
  110. helpstring("Wam 1.0 Type Library")
  111. ]
  112. library WAMLib
  113. {
  114. importlib("stdole2.tlb");
  115. [
  116. uuid(888ADDD0-9993-11D0-A539-00A0C922E798),
  117. helpstring("Wam object class")
  118. ]
  119. coclass Wam
  120. {
  121. [default] interface IWam;
  122. };
  123. };