EXTENSION_CONTROL_BLOCK Structure

La structure EXTENSION_CONTROL_BLOCK a la forme suivante:

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;

Le serveur communique avec l'ISA via EXTENSION_CONTROL_BLOCK.

Les références ci-dessus et indique si le membre s'applique aux messages de l'extension (IN) ou de l'extension (sort).

Membres

La structure EXTENSION_CONTROL_BLOCK contient les champs suivants:

cbSize

La taille de cette structure.

dwVersion

La version d'informations ofnbsp ; HTTP_FILTER_REVISIO&N. Le HIWORD a le numéro de version principale et le LOWORD a le numéro de version mineure.

ConnID

  ;Un numéro unique attribué par le serveur HTTP. Il ne doit pas être modifié.

dwHttpStatusCode

Le statut de la transaction en cours lorsque la demande est terminée. Peut être l'une des opérations suivantes:

lpszLogData

Mémoire tampon de taille HSE_LOG_BUFFER_LEN. Contient une chaîne d'information journal un NULL, spécifique à l'ISA, de la transaction en cours. Information de ce journal est entrée dans le journal du serveur HTTP. Maintien d'un seul fichier journal avec un serveur HTTP et de transactions d'ISA est très utile aux fins de l'administration.

lpszMethod

La méthode avec laquelle la demande a été faite. C'est l'équivalent à la variable CGI REQUEST_METHOD.

lpszQueryString

nbsp ;Chaîne contenant les informations de requête. C'est l'équivalent à la variable CGI QUERY_STRI&NG.

lpszPathInfo

Chaîne contenant les informations de chemin d'accès supplémentaire données par le client. Ceci est équivalent à la variable PATH_INFO de CGI.

lpszPathTranslated

Chaîne contenant le chemin d'accès traduit. C'est l'équivalent à la variable CGI PATH_TRANSLATED.

cbTotalBytes

Le nombre total d'octets à être reçu par le client. Ceci est équivalent à la variable CGI CO&NTENT_LENGTH. Si cette valeur est 0xffffffff, alors il existe quatre gigaoctets ou plus de data.nbsp disponibles ; Dans ce cas, CHttpServerContext::ReadClient doit être appelé jusqu'à ce que plus aucune donnée n'est renvoyée.

cbAvailable

Le nombre d'octets (out of a total of cbTotalBytes) dans la mémoire tampon pointé par lpbDatadisponibles. Si cbTotalBytes est le même que cbAvailable la variable lpbData pointe vers une mémoire tampon qui contient toutes les données envoyées par le client. Sinon, cbTotalBytes contiendra le nombre total d'octets de données reçues. L'ISA il faut ensuite utiliser la fonction de rappel CHttpServerContext::ReadClient pour lire le reste des données (à partir de l'offset de cbAvailable).

lpbData

Pointe vers une mémoire tampon de taille cbAvailable qui a les données envoyées par le client.

lpszContentType

Chaîne contenant le type de contenu des données envoyées par le client. C'est l'équivalent à la variable CGI CONTENT_TYPE.

GetServerVariable

Cette fonction copie d'informations (y compris les variables CGI) concernant une connexion HTTP, ou le serveur lui-même, dans une mémoire tampon. GetServerVariable prend les paramètres suivants:

WriteClient

Envoie les informations vers le client de la mémoire tampon indiquée. WriteClient prend les paramètres suivants:

ReadClient

Lit les informations du corps de la demande HTTP du client Web dans la mémoire tampon fourni par l'appelant. ReadClient prend les paramètres suivants:

ServerSupportFunction

Fournir l'ISAs avec certaines fonctions de généralistes, ainsi que des fonctions qui sont spécifiques à l'implémentation du serveur HTTP. ServerSupportFunction prend les paramètres suivants:

Commentaires

U&n serveur identifie les fichiers avec l'extensionsnbsp;.EXE et.BAT comme exécutables CGI (Common Gateway Interface). En outre, un serveur va identifier un fichier avec une extension DLL comme un script à exécuter.

Lorsque le serveur charge la DLL, il appelle la DLL au point d'entrée CHttpServer::GetExtensionVersion pour obtenir le numéro de version de lanbsp ; HTTP_FILTER_REVISIO&N l'ISA est basé sur et une description de texte court pour les administrateurs de serveur. Pour chaque demande du client, le point d'entrée de CHttpServer::HttpExtensionProc est appelé. L'extension reçoit les informations généralement nécessaires tels que la chaîne de requête, info de chemin d'accès, nom de la méthode et la voie traduite.

Voir aussi  ;CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc

Index