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) 또는 확장 (밖)에서 메시지에 적용 되는지 여부를 나타냅니다.
회원
EXTENSION_CONTROL_BLOCK 구조체에는 다음 필드가 포함 되어 있습니다.:
cbSize
이 구조체의 크기。
dwVersion
버전 정보를 ofnbsp; HTTP_FILTER_REVISION. HIWORD 는 주 버전 번호가 고 LOWORD 는 부 버전 번호(&N)。
ConnID
nbsp;HTTP 서버에 의해 할당 된 고유 번호입니다. 수정할 수 있어야 합니다(&N).
dwHttpStatusCode
요청이 완료 되 면 현재 트랜잭션의 상태입니다. 다음 중 하나가 될 수 있습니다.:
lpszLogData
HSE_LOG_BUFFER_LEN크기의 버퍼입니다. 현재 트랜잭션이 ISA에 null 종료 로그 정보 문자열을 포함 되어 있습니다. 이 로그 정보는 HTTP 서버 로그에 입력 됩니다. 관리 목적을 위해 매우 유용 HTTP 서버와 ISA 트랜잭션이 단일 로그 파일을 유지。
lpszMethod
메서드는 요청 되었다입니다. 이것은 CGI 변수 REQUEST_METHOD 에 해당。
lpszQueryString
nbsp;Null로 끝나는 문자열 쿼리 정보를 포함 합니다. 이것은 CGI 변수 QUERY_STRING 에 해당(&N)。
lpszPathInfo
Null로 끝나는 문자열 클라이언트에 의해 주어진 추가 경로 정보를 포함 합니다. 이것은 CGI 변수 PATH_INFO 같습니다.
lpszPathTranslated
Null로 끝나는 문자열 변환 된 경로 포함 합니다. 이것은 CGI 변수 PATH_TRANSLATED 같습니다.
cbTotalBytes
클라이언트에서 받은 바이트의 총 수입니다. 이것은 CGI 변수 CONTENT_LENGTH같습니다. 이 값이 0xffffffff 이면는 경우 4gb 이상의 사용 가능한 data.nbsp; 더 많은 데이터가 반환 될 때까지 CHttpServerContext::ReadClient 를 호출 해야이 경우(&N)。
cbAvailable
사용할 수 있는 (총 cbTotalBytes)의 밖으로 lpbData가 가리키는 버퍼의 바이트 수입니다. CbTotalBytes 는 cbAvailable 변수 lpbData 클라이언트에서 전송한 모든 데이터를 포함 하는 버퍼에 가리킵니다. 그렇지 않으면 cbTotalBytes 총 받은 데이터의 바이트 수가 포함 됩니다. ISA CHttpServerContext::ReadClient 콜백 함수를 사용 하 여 데이터 ( cbAvailable오프셋에서 시작)의 나머지를 읽이 필요가 다음。
lpbData
클라이언트에서 보낸 데이터 크기 cbAvailable 의 버퍼를 포인트。
lpszContentType
클라이언트에서 보낸 데이터의 콘텐츠 형식을 포함 된 null로 끝나는 문자열. 이것은 CGI 변수 CONTENT_TYPE 같습니다.
GetServerVariable
이 함수는 (를 포함 하 여 CGI 변수) 정보 관련 HTTP 연결, 또는 서버 자체를 버퍼에 복사 합니다. 다음 매개 변수를 사용 하는 GetServerVariable:
| 변수 이름 | 설명 |
| ALL_HTTP | 모든 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 헤더입니다. 적용의 값: 구분 하 여 연결 필드가 ",". 예를 들어, 다음 줄은 HTTP 헤더의 일부
그때 HTTP_ACCEPT 변수 값을 가질 것 이다:
|
| PATH_INFO | 클라이언트에 의해 주어진 추가 경로 정보입니다. 이 구성 URL의 후행 부분 스크립트 이름을 후 하지만 전에 쿼리 문자열 (있는 경우)。 |
| PATH_TRANSLATED | 이것은 PATH_INFO, 하지만 디렉터리 사양으로 확장 가상 경로 이름의 값。 |
| 부가적 | ? 이 스크립트를 참조 하는 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 프로그램이 실행 되는 웹 서버 버전。 |
WriteClient
지정 된 버퍼에서 클라이언트에 정보를 보냅니다. WriteClient 은 다음 매개 변수:
ReadClient
호출자가 제공한 버퍼에 웹 클라이언트의 HTTP 요청 본문에서 정보를 읽습니다. ReadClient 은 다음 매개 변수:
ServerSupportFunction
HTTP 서버 구현에 관련 된 기능 뿐만 아니라 몇 가지 범용 함수를 우주 과학 연구소를 제공 합니다. ServerSupportFunction 은 다음 매개 변수:
코멘트
Extensionsnbsp;와 파일을 식별 하는 서버.EXE와.CGI (Common Gateway Interface) 실행으로 전투. 또한, 서버 식별 파일 DLL 확장명을 가진 실행 스크립트(&N)。
서버 DLL을 로드 하는 경우에 DLL 진입점 thenbsp;의 버전 번호를 CHttpServer::GetExtensionVersion 에서 호출 HTTP_FILTER_REVISION ISA 기반으로 및 서버 관리자에 대 한 짧은 텍스트 설명. 모든 클라이언트 요청에 대 한 CHttpServer::HttpExtensionProc 진입점이 호출 됩니다. 확장 변환된 경로, 메서드 이름, 경로 정보, 쿼리 문자열 등 일반적으로 필요한 정보를 수신(&N)。
참고 항목nbsp;CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc(&N)