Estructura EXTENSION_CONTROL_BLOCK

La estructura EXTENSION_CONTROL_BLOCK tiene el siguiente formulario:

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;

El servidor se comunica con el ISA a través de la EXTENSION_CONTROL_BLOCK.

Las referencias a la entrada y de salida anterior indica si el miembro se aplica a los mensajes a la extensión (IN) o de la extensión (OUT).

Miembros

La estructura EXTENSION_CONTROL_BLOCK contiene los siguientes campos:

cbSize

El tamaño de esta estructura.

dwVersion

El ofnbsp de información de versión; HTTP_FILTER_REVISIO&N. El HIWORD tiene el número de versión principal y el LOWORD el número de versión menor.

ConnID

nbsp;Un número único asignado por el servidor HTTP. &No debe ser modificado.

dwHttpStatusCode

El estado de la transacción actual cuando se complete la solicitud. Puede ser uno de los siguientes:

lpszLogData

Búfer de tamaño HSE_LOG_BUFFER_LEN. Contiene una cadena de información de registro terminada en null, específica de la ISA de la transacción actual. Esta información de registro se incluirán en el registro del servidor HTTP. Mantener un único archivo de registro con las transacciones de ISA y el servidor HTTP es muy útil para propósitos de administración.

lpszMethod

El método con el cual se realizó la solicitud. Esto es equivalente a la variable CGI REQUEST_METHOD.

lpszQueryString

nbsp;Cadena terminada en nulo que contiene la información de consulta. Esto es equivalente a la variable CGI QUERY_STRI&NG.

lpszPathInfo

Cadena terminada en nulo que contiene información de ruta adicional dada por el cliente. Esto es equivalente a la variable CGI PATH_INFO.

lpszPathTranslated

Cadena terminada en nulo que contiene la ruta traducida. Esto es equivalente a la variable CGI PATH_TRANSLATED.

cbTotalBytes

El número total de bytes a ser recibidos desde el cliente. Esto es equivalente a la variable CGI CO&NTENT_LENGTH. Si este valor es 0xffffffff, hay cuatro gigabytes o más data.nbsp disponibles; En este caso, debería llamarse CHttpServerContext::ReadClient hasta que se devuelve ningún dato más.

cbAvailable

El número de bytes (de un total de cbTotalBytes) en el buffer apuntado por lpbDatadisponibles. Si cbTotalBytes es el mismo que cbAvailable la variable lpbData apuntará a un búfer que contiene todos los datos enviados por el cliente. De lo contrario cbTotalBytes contendrá el número total de bytes de datos recibidos. ISA, a continuación, tendrá que utilizar la función de devolución de llamada CHttpServerContext::ReadClient para leer el resto de los datos (a partir de un desvío de cbAvailable).

lpbData

Puntos a un búfer de tamaño cbAvailable que tiene los datos enviados por el cliente.

lpszContentType

Cadena terminada en nulo que contiene el tipo de contenido de los datos enviados por el cliente. Esto es equivalente a la variable CGI CONTENT_TYPE.

GetServerVariable

Esta función copia información (incluidas las variables CGI) relativa a una conexión HTTP o al servidor de sí mismo, en un búfer. GetServerVariable toma los siguientes parámetros:

WriteClient

Envía información al cliente desde el buffer indicado. WriteClient toma los siguientes parámetros:

ReadClient

Lee la información del cuerpo de la solicitud HTTP del cliente Web en el búfer suministrado por el llamador. ReadClient toma los siguientes parámetros:

ServerSupportFunction

Proporcionar los ISAs con algunas funciones de propósito generales, así como las funciones que son específicas para la implementación del servidor HTTP. ServerSupportFunction toma los siguientes parámetros:

Comentarios

U&n servidor identifica los archivos con el extensionsnbsp;.EXE y.BAT como ejecutables CGI (Common Gateway Interface). Además, un servidor identificará a un archivo con una extensión DLL como una secuencia de comandos para ejecutar.

Cuando el servidor carga la DLL, llama a la DLL en el punto de entrada CHttpServer::GetExtensionVersion para obtener el número de versión de thenbsp; HTTP_FILTER_REVISIO&N ISA se basa y una descripción de texto corto para los administradores del servidor. Para cada solicitud de cliente, se llama el punto de entrada CHttpServer::HttpExtensionProc . La extensión recibe la información necesaria comúnmente como la cadena de consulta, información de ruta de acceso, nombre de método y la ruta traducida.

Vea tambié&nnbsp;CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc

Index