Struttura EXTENSION_CONTROL_BLOCK

La struttura EXTENSION_CONTROL_BLOCK ha la seguente 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;

Il server comunica con l'ISA tramite il EXTENSION_CONTROL_BLOCK.

I riferimenti a dentro e fuori sopra indica se il membro verrà applicata ai messaggi all'estensione (IN) o dall'estensione (OUT).

Membri

La struttura EXTENSION_CONTROL_BLOCK contiene i seguenti campi:

cbSize

La dimensione di questa struttura.

dwVersion

La versione ofnbsp informazioni; HTTP_FILTER_REVISIO&N. Il HIWORD ha il numero di versione principale e il LOWORD ha il numero di versione secondaria.

ConnID

nbsp;Un numero univoco assegnato dal server HTTP. &Non devono essere modificata.

dwHttpStatusCode

Lo stato della transazione corrente quando la richiesta viene completata. Può essere uno dei seguenti:

lpszLogData

Buffer di dimensione HSE_LOG_BUFFER_LEN. Contiene una stringa di informazioni di registro con terminazione null, specifica per l'ISA, della transazione corrente. Queste informazioni di registro verranno inserite nel log del server HTTP. Mantenimento di un singolo file di log con server HTTP e transazioni ISA è molto utile per scopi di amministrazione.

lpszMethod

Il metodo con cui la richiesta è stata fatta. Questo è equivalente alla variabile CGI REQUEST_METHOD.

lpszQueryString

nbsp;Stringa con terminazione &NULL contenente le informazioni di query. Questo è equivalente alla variabile QUERY_STRING CGI.

lpszPathInfo

Stringa con terminazione NULL contenente informazioni sul percorso supplementare forniti dal cliente. Questo è equivalente alla variabile CGI PATH_INFO.

lpszPathTranslated

Stringa con terminazione NULL contenente il percorso tradotto. Questo è equivalente alla variabile CGI PATH_TRANSLATED.

cbTotalBytes

Il numero totale di byte che deve essere ricevuti dal client. Questo è equivalente alla variabile CO&NTENT_LENGTHCGI. Se questo valore è 0xffffffff, ci sono quattro gigabyte o più di data.nbsp disponibili; In questo caso, dovrebbe essere chiamato CHttpServerContext::ReadClient fino a quando non viene restituiti alcun più dati.

cbAvailable

Il numero di byte (di un totale di cbTotalBytes) nel buffer disponibile a cui punta lpbData. Se cbTotalBytes è lo stesso di cbAvailable la variabile lpbData punterà a un buffer che contiene tutti i dati inviati dal client. In caso contrario cbTotalBytes conterrà il numero totale di byte di dati ricevuti. L'ISA sarà quindi necessario utilizzare la funzione di callback CHttpServerContext::ReadClient per leggere il resto dei dati (a partire da un offset di cbAvailable).

lpbData

Punti a un buffer di dimensione cbAvailable contenente i dati inviati dal client.

lpszContentType

Stringa con terminazione NULL contenente il tipo di contenuto dei dati inviati dal client. Questo è equivalente alla variabile CGI CONTENT_TYPE.

GetServerVariable

Questa funzione copia informazioni (incluse le variabili CGI) relativi a una connessione HTTP, o per il server stesso, in un buffer. GetServerVariable accetta i seguenti parametri:

WriteClient

Invia informazioni al client dal buffer indicato. WriteClient accetta i seguenti parametri:

ReadClient

Legge le informazioni dal corpo della richiesta HTTP del client Web nel buffer fornito dal chiamante. ReadClient accetta i seguenti parametri:

ServerSupportFunction

Fornire l'ISAs con alcune funzioni general-purpose, nonché le funzioni specifiche per l'implementazione di server HTTP. ServerSupportFunction accetta i seguenti parametri:

Commenti

U&n server identifica i file con la extensionsnbsp;.EXE e.BAT come eseguibili CGI (Common Gateway Interface). Inoltre, un server identificherà un file con estensione DLL come uno script da eseguire.

Quando il server viene caricata la DLL, chiama la DLL al punto di ingresso GetExtensionVersion per ottenere il numero di versione di thenbsp; HTTP_FILTER_REVISIO&N ISA si basa su e una descrizione di testo breve per gli amministratori del server. Per ogni richiesta del client, viene chiamato il punto di ingresso di CHttpServer:: HttpExtensionProc . L'estensione riceve le informazioni come ad esempio la stringa di query, informazioni di percorso, nome del metodo e il percorso tradotto comunemente necessari.

Vedere a&nchenbsp;CHttpServerContext::ReadClient, GetExtensionVersion, CHttpServer:: HttpExtensionProc

Index