Leaked source code of windows server 2003
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.

167 lines
3.6 KiB

  1. /*++
  2. Copyright (c) 1999 Microsoft Corporation
  3. Module Name :
  4. w3isapi.h
  5. Abstract:
  6. IIS+ ISAPI handler.
  7. Author:
  8. Taylor Weiss (TaylorW) 03-Feb-2000
  9. Project:
  10. w3isapi.dll
  11. --*/
  12. #ifndef _W3ISAPI_H_
  13. #define _W3ISAPI_H_
  14. #include <http.h>
  15. #include <httpp.h>
  16. #include <iisextp.h>
  17. #include <iisapicore.h>
  18. #define SIZE_CLSID_STRING 40
  19. /* ISAPI_CORE_DATA -
  20. This structure contains the request data necessary to process
  21. an ISAPI request.
  22. For an "in process" request, this structure's pointers could
  23. potentially point to memory allocated by the server core. To
  24. support "out of process" requests, it's necessary to append
  25. the important data to the structure itself in a single block.
  26. The _cbSize member should reflect the size of both the structure,
  27. and any such appended data.
  28. */
  29. struct ISAPI_CORE_DATA
  30. {
  31. //
  32. // Structure size information
  33. //
  34. DWORD cbSize;
  35. //
  36. // CLSID of the WAM to handle the request - If
  37. // the value is an empty string, then the request
  38. // will be handled inproc.
  39. //
  40. WCHAR szWamClsid[SIZE_CLSID_STRING];
  41. BOOL fIsOop;
  42. //
  43. // Secure request?
  44. //
  45. BOOL fSecure;
  46. //
  47. // Client HTTP version
  48. //
  49. DWORD dwVersionMajor;
  50. DWORD dwVersionMinor;
  51. //
  52. // Web site instance ID
  53. //
  54. DWORD dwInstanceId;
  55. //
  56. // Request content-length
  57. //
  58. DWORD dwContentLength;
  59. //
  60. // Authenticated client impersonation token
  61. //
  62. HANDLE hToken;
  63. PSID pSid;
  64. //
  65. // Request ID
  66. //
  67. HTTP_REQUEST_ID RequestId;
  68. //
  69. // Embedded string sizes
  70. //
  71. DWORD cbGatewayImage;
  72. DWORD cbPhysicalPath;
  73. DWORD cbPathInfo;
  74. DWORD cbMethod;
  75. DWORD cbQueryString;
  76. DWORD cbPathTranslated;
  77. DWORD cbContentType;
  78. DWORD cbConnection;
  79. DWORD cbUserAgent;
  80. DWORD cbCookie;
  81. DWORD cbApplMdPath;
  82. DWORD cbApplMdPathW;
  83. DWORD cbPathTranslatedW;
  84. //
  85. // Request string data
  86. //
  87. LPWSTR szGatewayImage;
  88. LPSTR szPhysicalPath;
  89. LPSTR szPathInfo;
  90. LPSTR szMethod;
  91. LPSTR szQueryString;
  92. LPSTR szPathTranslated;
  93. LPSTR szContentType;
  94. LPSTR szConnection;
  95. LPSTR szUserAgent;
  96. LPSTR szCookie;
  97. LPSTR szApplMdPath;
  98. //
  99. // Unicode data used by ASP
  100. //
  101. // This is only populated in the OOP case so that
  102. // we can avoid an RPC call when ASP calls GetServerVariable
  103. // for them. Inproc, they are NULL.
  104. //
  105. LPWSTR szApplMdPathW;
  106. LPWSTR szPathTranslatedW;
  107. //
  108. // Entity data
  109. //
  110. DWORD cbAvailableEntity;
  111. LPVOID pAvailableEntity;
  112. //
  113. // Site config data
  114. //
  115. BOOL fAllowKeepAlive;
  116. };
  117. typedef HRESULT(* PFN_ISAPI_INIT_MODULE)( LPSTR, LPSTR, DWORD );
  118. typedef VOID(* PFN_ISAPI_TERM_MODULE)( VOID );
  119. typedef HRESULT(* PFN_ISAPI_PROCESS_REQUEST)( IIsapiCore *, ISAPI_CORE_DATA *, DWORD * );
  120. typedef HRESULT(* PFN_ISAPI_PROCESS_COMPLETION)( DWORD64, DWORD, DWORD );
  121. #define ISAPI_INIT_MODULE "InitModule"
  122. #define ISAPI_TERM_MODULE "TerminateModule"
  123. #define ISAPI_PROCESS_REQUEST "ProcessIsapiRequest"
  124. #define ISAPI_PROCESS_COMPLETION "ProcessIsapiCompletion"
  125. #define ISAPI_MODULE_NAME L"w3isapi.dll"
  126. #endif // _W3ISAPI_H_