HttpISAPI.h
上传用户:dengkfang
上传日期:2008-12-30
资源大小:5233k
文件大小:4k
源码类别:

CA认证

开发平台:

Visual C++

  1. /*
  2. Module : HttpISAPI.h
  3. Purpose: Defines the interface for the CHttpISAPI class
  4. Created: PJN / 21-02-2003
  5. Copyright (c) 2003 - 2005 by PJ Naughter.  (Web: www.naughter.com, Email: pjna@naughter.com)
  6. All rights reserved.
  7. Copyright / Usage Details:
  8. You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) 
  9. when your product is released in binary form. You are allowed to modify the source code in any way you want 
  10. except you cannot modify the copyright details at the top of each module. If you want to distribute source 
  11. code with your application, then you are only allowed to distribute versions released by the author. This is 
  12. to maintain a single distribution point for the source code. 
  13. */
  14. /////////////////////////////// Defines ///////////////////////////////////////
  15. #ifndef __HTTPISAPI_H__
  16. #define __HTTPISAPI_H__
  17. #ifndef W3MFC_EXT_CLASS
  18. #define W3MFC_EXT_CLASS
  19. #endif
  20. //#include <afxisapi.h>
  21. /////////////////////////////// Classes ///////////////////////////////////////
  22. //forward declarations
  23. class CHttpServer;
  24. class CHttpClient;
  25. class W3MFC_EXT_CLASS CHttpISAPIExtension
  26. {
  27. public:
  28. //typedefs
  29.   typedef BOOL (_stdcall GETEXTENSIONVERSION)(HSE_VERSION_INFO*);
  30.   typedef GETEXTENSIONVERSION* LPGETEXTENSIONVERSION;
  31.   typedef DWORD (_stdcall HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*);
  32.   typedef HTTPEXTENSIONPROC* LPHTTPEXTENSIONPROC;
  33.   typedef BOOL (_stdcall TERMINATEEXTENSION)(DWORD);
  34.   typedef TERMINATEEXTENSION* LPTERMINATEEXTENSION;
  35.   
  36. //Constructors / Destructors
  37.   CHttpISAPIExtension();
  38.   virtual ~CHttpISAPIExtension();
  39. //methods
  40.   BOOL CallGetExtensionVersion(HSE_VERSION_INFO* phseVerInfo);
  41.   BOOL CallTerminateExtension();
  42. //Member variables
  43.   HMODULE               m_hDLL;                  //The module instance;
  44.   LPGETEXTENSIONVERSION m_lpGetExtensionVersion; //The GetExtensionVersion function
  45.   LPHTTPEXTENSIONPROC   m_lpHttpExtensionProc;   //The HttpExtensionProc function
  46.   LPTERMINATEEXTENSION  m_lpTerminateExtension;  //The TerminateExtension function
  47.   CString               m_sPath;                 //The fully qualified path for the extension (just here for logging purposes)
  48. };
  49. //The values relating to a single directory which the web server handles
  50. class W3MFC_EXT_CLASS CHttpISAPI
  51. {
  52. public:
  53. //Constructors / Destructors
  54.   CHttpISAPI(int nISAPIHashTableSize);
  55.   virtual ~CHttpISAPI();
  56. //Methods
  57.   virtual CHttpISAPIExtension* CachedLoad(const CString& sPath);
  58.   virtual BOOL                 UncachedLoad(const CString& sPath, CHttpISAPIExtension& extension);
  59.   virtual BOOL                 CallHttpExtensionProc(CHttpClient* pClient, CHttpISAPIExtension& extension);
  60.   void                         ReportHttpExtensionProcError(CHttpClient* pClient, CHttpISAPIExtension& extension, DWORD dwError);
  61.   void                         FreeMapEntries();
  62.   void                         SetServer(CHttpServer* pServer);
  63.   static BOOL WINAPI           GetServerVariable(HCONN hConn, LPSTR lpszVariableName, void* lpBuffer, DWORD* lpdwBufferSize);
  64.   static BOOL WINAPI           ServerSupportFunction(HCONN hConn, DWORD dwHSERRequest, LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType);
  65.   static BOOL WINAPI           WriteClient(HCONN ConnID, LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwSync);
  66.   static BOOL WINAPI           ReadClient(HCONN hConn, LPVOID lpvBuffer, LPDWORD lpdwSize);
  67. protected:
  68.   CMapStringToPtr  m_mapExtensions; //The hash table which maintains filename to CHttpISAPIExtension mappings
  69.   CHttpServer*     m_pServer;       //The controlling web server instance
  70.   CCriticalSection m_CS;            //Thread protects access to the hash table from multiple threads
  71. };
  72. #endif //__HTTPISAPI_H__