EXTENSION_CONTROL_BLOCK構造は次の形式をが:
typedef struct _EXTENSION_CONTROL_BLOCK {
DWORD cbSize; //IN
DWORD dwVersion //IN
HCONN ConnID; //IN
DWORD dwHttpStatusCode; //OUT
CHAR lpszLogData[HSE_LOG_BUFFER_LEN]; //OUT
LPSTR lpszMethod; //IN
LPSTR lpszQueryString; //IN
LPSTR lpszPathInfo; //IN
LPSTR lpszPathTranslated; //IN
DWORD cbTotalBytes; //IN
DWORD cbAvailable; //IN
LPBYTE lpbData; //IN
LPSTR lpszContentType; //IN
BOOL ( WINAPI * GetServerVariable )
( HCONN hConn,
LPSTR lpszVariableName,
LPVOID lpvBuffer,
LPDWORD lpdwSize );
BOOL ( WINAPI * WriteClient )
( HCONN ConnID,
LPVOID Buffer,
LPDWORD lpdwBytes,
DWORD dwReserved );
BOOL ( WINAPI * ReadClient )
( HCONN ConnID,
LPVOID lpvBuffer,
LPDWORD lpdwSize );
BOOL ( WINAPI * ServerSupportFunction )
( HCONN hConn,
DWORD dwHSERRequest,
LPVOID lpvBuffer,
LPDWORD lpdwSize,
LPDWORD lpdwDataType );
} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
EXTENSION_CONTROL_BLOCKを介して ISA サーバーと通信します。
上記への参照を示しますメンバー メッセージ拡張 (IN) または (OUT) 拡張対象かどうか。
メンバー
EXTENSION_CONTROL_BLOCK構造に次のフィールドが含まれています:
cbSize
この構造体のサイズ。
dwVersion
バージョン情報 ofnbsp;HTTP_FILTER_REVISION。HIWORDメジャー バージョン番号と、 LOWORDマイナー バージョン番号(&N)。
ConnID
特価;HTTP サーバーによって割り当てられる一意の番号。変更する必要があります。(&N)。
dwHttpStatusCode
要求が完了すると、現在のトランザクションのステータス。次のいずれかをすることができます。:
lpszLogData
バッファーのサイズHSE_LOG_BUFFER_LEN。現在のトランザクションの ISA には、特定のログの null で終わる情報文字列を格納します。このログ情報は、HTTP サーバー ログに入力されます。HTTP サーバーと ISA トランザクションの両方が、単一のログ ファイルを維持管理のために非常に便利です。
lpszMethod
要求されたメソッド。これは CGI 変数REQUEST_METHODに相当します。
lpszQueryString
特価;クエリ情報を含む null で終わる文字列。これは CGI 変数QUERY_STRINGに相当します。(&N)。
lpszPathInfo
クライアントによって指定された追加のパス情報を含む null で終わる文字列。これは CGI 変数PATH_INFOと同じです。
lpszPathTranslated
変換されたパスを含む null で終わる文字列。これは CGI 変数PATH_TRANSLATEDに相当します。
cbTotalBytes
クライアントから受信されるバイトの合計数。これは CGI 変数CONTENT_LENGTHに相当します。この値が 0 xffffffff の場合は、その後は 4 gb 以上の利用可能な data.nbsp;ないより多くのデータが返されるまで、 CHttpServerContext::ReadClientがこのケースでは、呼び出す必要があります。(&N)。
cbAvailable
使用可能なlpbDataが指すバッファー (のcbTotalBytesの合計バイト数。場合はcbTotalBytes cbAvailable変数と同じですlpbDataは、クライアントによって送信されるすべてのデータを含むバッファーをポイントします。それ以外の場合cbTotalBytesは、受信したデータのバイトの合計数が含まれます。ISA は、( cbAvailableのオフセットから開始)、データの残りの部分を読むにコールバック関数CHttpServerContext::ReadClientを使用する必要があります。
lpbData
クライアントによって送信されるデータがサイズcbAvailableのバッファーへのポインター。
lpszContentType
クライアントによって送信されたデータのコンテンツ タイプを含む null で終わる文字列。これは CGI 変数CONTENT_TYPEに相当します。
GetServerVariable
この関数は、(CGI 変数を含む) の情報を HTTP 接続、または、サーバー自体のバッファーに関連をコピーします。GetServerVariableには次のパラメーターをが:
変数名 | 説明 |
ALL_HTTP | 既に上記の変数の 1 つに解析されていないすべての HTTP ヘッダー。これらの変数は、フォーム HTTP_lt、ヘッダー フィールド名 & gt は。 |
AUTH_PASS | これは、クライアントによって提供されるREMOTE_USERに対応するパスワードを取得します。Null で終わる文字列。 |
AUTH_TYPE | 認証 used.nbsp の種類が含まれています。たとえば、基本認証を使用する場合、文字列"Basic"になります。Windows NT チャレンジ/レスポンスは、"NTLM"になります。他の認証スキームは、他の文字列になります。新しい認証の種類はインターネット サーバーに追加することができますので、すべての可能な文字列を一覧表示することはできません。文字列が空の場合、認証は使用されません。(&N)。 |
CONTENT_LENGTH | クライアントから受信するには、スクリプトが期待できるバイト数。 |
CONTENT_TYPE | POST 要求の本体に指定されている情報のコンテンツの種類。 |
GATEWAY_INTERFACE | このサーバーに準拠する CGI 仕様のリビジョン。CGI や 1.1 は、現在のバージョンです。 |
HTTP_ACCEPT | 特別な場合 HTTP ヘッダー。Accept の値: フィールドが連結で区切られた「」。たとえば、HTTP ヘッダーの一部を次に示します
[ HTTP_ACCEPT変数の値をが:
|
PATH_INFO | クライアントによって指定された追加のパス情報。これは、URL の末尾の部分がクエリ文字列の前に、スクリプト名の後 (もしあれば) 構成します。 |
PATH_TRANSLATED | これは PATH_INFO が、ディレクトリ仕様に拡張された仮想パス名です。 |
QUERY_STRING | ?このスクリプトを参照する URL で次のように、情報。 |
REMOTE_ADDR | クライアントの IP アドレス。 |
REMOTE_HOST | クライアントのホスト名。 |
REMOTE_USER | これは、クライアントによって提供され、サーバーで認証にユーザー名が含まれています。 |
REQUEST_METHOD | HTTP 要求メソッド。 |
SCRIPT_NAME | 実行中のスクリプト プログラムの名前。 |
SERVER_NAME | サーバーのホスト名 (または IP アドレス) は自己参照 Url に表示する必要があります。 |
SERVER_PORT | 要求を受信した、TCP/IP ポート。 |
SERVER_PROTOCOL | 名前とこの要求に関連する情報検索プロトコルのバージョン。通常の HTTP/1.0。 |
SERVER_SOFTWARE | CGI プログラムが実行されている web サーバーのバージョンと名前。 |
WriteClient
情報をクライアントに、指定されたバッファーから送信します。WriteClientには次のパラメーターをが:
ReadClient
情報は、Web クライアントの HTTP 要求の本体から、呼び出し元によって指定されたバッファーに読み取ります。ReadClientには次のパラメーターをが:
ServerSupportFunction
Isa は、HTTP サーバー実装に固有な機能だけではなく汎用の機能の一部を提供します。ServerSupportFunctionには次のパラメーターをが:
コメント
サーバー ファイルと extensionsnbsp 識別;。EXE と。CGI (共通ゲートウェイ インターフェイス) 実行可能ファイルとしてバットします。さらに、サーバー ファイル、DLL 拡張子を実行するスクリプトとして識別します。(&N)。
サーバー DLL を読み込む場合は、thenbsp のバージョン番号を取得するには、 CHttpServer::GetExtensionVersionのエントリ ポイントで、DLL を呼び出す;ISA に基づいていますHTTP_FILTER_REVISIONとサーバー管理者を説明する短いテキスト。すべてのクライアント要求には、 CHttpServer::HttpExtensionProcエントリ ポイントと呼ばれます。一般的に必要な情報、クエリ文字列、パス情報、メソッド名、および翻訳のパスなど、拡張機能を受け取る(&N)。
参照特価;CHttpServerContext::ReadClient、 CHttpServer::GetExtensionVersion、 CHttpServer::HttpExtensionProc(&N)