Estrutura EXTENSION_CONTROL_BLOCK

A EXTENSION_CONTROL_BLOCK estrutura tem a seguinte forma:

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;

O servidor se comunica com o ISA através o EXTENSION_CONTROL_BLOCK.

As referências para dentro e para fora acima indica se o membro se aplica a mensagens de extensão (IN) ou para a extensão (fora).

Membros

A estrutura EXTENSION_CONTROL_BLOCK contém os seguintes campos:

cbSize

O tamanho dessa estrutura.

dwVersion

O ofnbsp de informações de versão; HTTP_FILTER_REVISIO&N. O HIWORD tem o número de versão principal e LOWORD tem o número de versão secundária.

ConnID

 Um número exclusivo atribuído pelo servidor de HTTP. Ele não deve ser modificado.

dwHttpStatusCode

O status da transação atual quando a solicitação é concluída. Pode ser uma das seguintes:

lpszLogData

Buffer de tamanho HSE_LOG_BUFFER_LEN. Contém uma Cadeia de informações log null-terminated, específica para o ISA, da transação atual. Este informações log serão inscritos no registo do servidor HTTP. A manutenção de um único arquivo de log com o servidor HTTP e transações de ISA é muito útil para fins de administração.

lpszMethod

O método com o qual a solicitação foi feita. Isso é equivalente para a variável CGI REQUEST_METHOD.

lpszQueryString

nbsp;Cadeia de caracteres terminada por caractere nulo que contém as informações de consulta. Isso é equivalente para a variável CGI QUERY_STRI&NG.

lpszPathInfo

Cadeia de caracteres terminada por caractere nulo que contém informações de caminho adicionais dadas pelo cliente. Isso é equivalente para a variável CGI PATH_INFO.

lpszPathTranslated

Cadeia de caracteres terminada por caractere nulo que contém o caminho convertido. Isso é equivalente para a variável CGI PATH_TRANSLATED.

cbTotalBytes

O número total de bytes a ser recebida do cliente. Isso é equivalente para a variável CGI CO&NTENT_LENGTH. Se esse valor é 0xffffffff, então há quatro gigabytes ou mais de data.nbsp disponíveis; Neste caso, deve ser chamado CHttpServerContext::ReadClient , até que não há mais dados são retornados.

cbAvailable

O número de bytes (de um total de cbTotalBytes) na reserva apontado pelo lpbDatadisponíveis. Se cbTotalBytes é o mesmo que cbAvailable variável lpbData irá apontar para uma reserva que contém todos os dados enviados pelo cliente. Caso contrário, cbTotalBytes irá conter o número total de bytes de dados recebidos. O ISA, em seguida, será necessário usar a função de retorno de chamada CHttpServerContext::ReadClient para ler o resto dos dados (a partir de um deslocamento de cbAvailable).

lpbData

Aponta para um buffer de tamanho cbAvailable que contém os dados enviados pelo cliente.

lpszContentType

Cadeia de caracteres terminada por caractere nulo que contém o tipo de conteúdo dos dados enviados pelo cliente. Isso é equivalente para a variável CGI CONTENT_TYPE.

GetServerVariable

Esta função copia informações (incluindo variáveis CGI) relativas a uma conexão HTTP, ou para o próprio servidor, em um buffer. GetServerVariable leva os seguintes parâmetros:

WriteClient

Envia informação para o cliente do buffer indicado. WriteClient leva os seguintes parâmetros:

ReadClient

Lê informações do corpo da solicitação HTTP do cliente da Web para o buffer fornecido pelo chamador. ReadClient leva os seguintes parâmetros:

ServerSupportFunction

Fornece os ISAs com algumas funções de uso gerais, bem como as funções que são específicas para implementação do servidor HTTP. ServerSupportFunction leva os seguintes parâmetros:

Comentários

Um servidor ide&ntifica arquivos com extensionsnbsp;.EXE e.BAT como executáveis CGI (Common Gateway Interface). Além disso, um servidor identificará um arquivo com uma extensão DLL como um script a executar.

Quando o servidor carrega a DLL, ele chama o DLL no ponto de entrada CHttpServer:: GetExtensionVersion para obter o número de versão do thenbsp; HTTP_FILTER_REVISIO&N ISA se baseia e uma curta descrição de texto para os administradores do servidor. Para cada solicitação de cliente, o ponto de entrada CHttpServer::HttpExtensionProc é chamado. A extensão recebe a informação comumente necessárias, como a Cadeia de caracteres de consulta, informações de caminho, nome do método e o caminho convertido.

Co&nsulte tambémnbsp;CHttpServerContext::ReadClient, CHttpServer:: GetExtensionVersion, CHttpServer::HttpExtensionProc

Index