home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Runimage / Delphi50 / Source / Rtl / Win / ISAPI.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  5.5 KB  |  150 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Borland Delphi Runtime Library                  }
  5. {       Structure definitions and prototypes for the    }
  6. {       Microsoft Internet Server API (ISAPI)           }
  7. {                                                       }
  8. {       Copyright (C) 1996,99 Inprise Corporation       }
  9. {                                                       }
  10. {*******************************************************}
  11.  
  12. unit Isapi;
  13.  
  14. {$WEAKPACKAGEUNIT}
  15.  
  16. interface
  17.  
  18. uses Windows;
  19.  
  20. const
  21.   HSE_VERSION_MAJOR         =   1;      // major version of this spec
  22.   {$EXTERNALSYM HSE_VERSION_MAJOR}
  23.   HSE_VERSION_MINOR         =   0;      // minor version of this spec
  24.   {$EXTERNALSYM HSE_VERSION_MINOR}
  25.   HSE_LOG_BUFFER_LEN        =  80;
  26.   {$EXTERNALSYM HSE_LOG_BUFFER_LEN}
  27.   HSE_MAX_EXT_DLL_NAME_LEN  = 256;
  28.   {$EXTERNALSYM HSE_MAX_EXT_DLL_NAME_LEN}
  29.  
  30. type
  31.   HCONN = THandle;
  32.   {$EXTERNALSYM HCONN}
  33.  
  34. // the following are the status codes returned by the Extension DLL
  35.  
  36. const
  37.   HSE_STATUS_SUCCESS                      = 1;
  38.   {$EXTERNALSYM HSE_STATUS_SUCCESS}
  39.   HSE_STATUS_SUCCESS_AND_KEEP_CONN        = 2;
  40.   {$EXTERNALSYM HSE_STATUS_SUCCESS_AND_KEEP_CONN}
  41.   HSE_STATUS_PENDING                      = 3;
  42.   {$EXTERNALSYM HSE_STATUS_PENDING}
  43.   HSE_STATUS_ERROR                        = 4;
  44.   {$EXTERNALSYM HSE_STATUS_ERROR}
  45.  
  46. // The following are the values to request services with the ServerSupportFunction.
  47. //  Values from 0 to 1000 are reserved for future versions of the interface
  48.  
  49.   HSE_REQ_BASE                             = 0;
  50.   {$EXTERNALSYM HSE_REQ_BASE}
  51.   HSE_REQ_SEND_URL_REDIRECT_RESP           = ( HSE_REQ_BASE + 1 );
  52.   {$EXTERNALSYM HSE_REQ_SEND_URL_REDIRECT_RESP}
  53.   HSE_REQ_SEND_URL                         = ( HSE_REQ_BASE + 2 );
  54.   {$EXTERNALSYM HSE_REQ_SEND_URL}
  55.   HSE_REQ_SEND_RESPONSE_HEADER             = ( HSE_REQ_BASE + 3 );
  56.   {$EXTERNALSYM HSE_REQ_SEND_RESPONSE_HEADER}
  57.   HSE_REQ_DONE_WITH_SESSION                = ( HSE_REQ_BASE + 4 );
  58.   {$EXTERNALSYM HSE_REQ_DONE_WITH_SESSION}
  59.   HSE_REQ_END_RESERVED                     = 1000;
  60.   {$EXTERNALSYM HSE_REQ_END_RESERVED}
  61.  
  62. //
  63. //  These are Microsoft specific extensions
  64. //
  65.  
  66.   HSE_REQ_MAP_URL_TO_PATH                  = (HSE_REQ_END_RESERVED+1);
  67.   {$EXTERNALSYM HSE_REQ_MAP_URL_TO_PATH}
  68.   HSE_REQ_GET_SSPI_INFO                    = (HSE_REQ_END_RESERVED+2);
  69.   {$EXTERNALSYM HSE_REQ_GET_SSPI_INFO}
  70.  
  71. //
  72. // passed to GetExtensionVersion
  73. //
  74.  
  75. type
  76.   PHSE_VERSION_INFO = ^HSE_VERSION_INFO;
  77.   HSE_VERSION_INFO = packed record
  78.     dwExtensionVersion: DWORD;
  79.     lpszExtensionDesc: array [0..HSE_MAX_EXT_DLL_NAME_LEN-1] of Char;
  80.   end;
  81.   {$EXTERNALSYM HSE_VERSION_INFO}
  82.   THSE_VERSION_INFO = HSE_VERSION_INFO;
  83.   LPHSE_VERSION_INFO = PHSE_VERSION_INFO;
  84.   {$EXTERNALSYM LPHSE_VERSION_INFO}
  85.  
  86. type
  87.   TGetServerVariableProc = function ( hConn: HCONN;
  88.                                       VariableName: PChar;
  89.                       Buffer: Pointer;
  90.                                       var Size: DWORD ): BOOL stdcall;
  91.  
  92.   TWriteClientProc = function ( ConnID: HCONN;
  93.                                 Buffer: Pointer;
  94.                                 var Bytes: DWORD;
  95.                                 dwReserved: DWORD ): BOOL stdcall;
  96.  
  97.   TReadClientProc  = function ( ConnID: HCONN;
  98.                                 Buffer: Pointer;
  99.                                 var Size: DWORD ): BOOL stdcall;
  100.  
  101.   TServerSupportFunctionProc = function ( hConn: HCONN;
  102.                                           HSERRequest: DWORD;
  103.                                           Buffer: Pointer;
  104.                                           var Size: DWORD;
  105.                                           var DataType: DWORD ): BOOL stdcall;
  106.  
  107. //
  108. // passed to extension procedure on a new request
  109. //
  110. type
  111.  
  112.   PEXTENSION_CONTROL_BLOCK = ^TEXTENSION_CONTROL_BLOCK;
  113.   TEXTENSION_CONTROL_BLOCK = packed record
  114.     cbSize: DWORD;                    // size of this struct.
  115.     dwVersion: DWORD;                 // version info of this spec
  116.     ConnID: HCONN;                    // Context number not to be modified!
  117.     dwHttpStatusCode: DWORD;          // HTTP Status code
  118.              // null terminated log info specific to this Extension DLL
  119.     lpszLogData: array [0..HSE_LOG_BUFFER_LEN-1] of Char;
  120.     lpszMethod: PChar;                // REQUEST_METHOD
  121.     lpszQueryString: PChar;           // QUERY_STRING
  122.     lpszPathInfo: PChar;              // PATH_INFO
  123.     lpszPathTranslated: PChar;        // PATH_TRANSLATED
  124.     cbTotalBytes: DWORD;              // Total bytes indicated from client
  125.     cbAvailable: DWORD;               // Available number of bytes
  126.     lpbData: Pointer;                 // pointer to cbAvailable bytes
  127.     lpszContentType: PChar;           // Content type of client data
  128.  
  129.     GetServerVariable: TGetServerVariableProc;
  130.     WriteClient: TWriteClientProc;
  131.     ReadClient: TReadClientProc;
  132.     ServerSupportFunction: TServerSupportFunctionProc;
  133.   end;
  134.  
  135. //
  136. //  these are the prototypes that must be exported from the extension DLL
  137. //
  138.  
  139. //  function GetExtensionVersion( var Ver: THSE_VERSION_INFO ): BOOL; stdcall;
  140. //  function HttpExtensionProc( var ECB: TEXTENSION_CONTROL_BLOCK ): DWORD; stdcall;
  141.  
  142. // the following type declarations is for the server side
  143.  
  144. // typedef BOOL  (WINAPI * PFN_GETEXTENSIONVERSION)( HSE_VERSION_INFO  *pVer );
  145. // typedef DWORD (WINAPI * PFN_HTTPEXTENSIONPROC )( EXTENSION_CONTROL_BLOCK *pECB );
  146.  
  147. implementation
  148.  
  149. end.
  150.