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.

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