EXTENSION_CONTROL_BLOCK yapısı aşağıdaki biçime sahiptir:
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;
Sunucu ISA EXTENSION_CONTROL_BLOCK üzerinden iletişim kurar.
Üye iletilerini uzantısı (In) veya (dışarı) uzantısı geçerli olup olmadığını gösterir ve dışarı yukarıdaki başvuruları.
Üyeler
EXTENSION_CONTROL_BLOCK yapısı aşağıdaki alanları içerir.:
cbSize
Bu yapısı.
dwVersion
Sürüm bilgilerini ofnbsp; HTTP_FILTER_REVISIO&N. HIWORD ana sürüm numarası ve loword alt sürüm numarası.
RequestId'yi
http sunucusu tarafından atanan benzersiz bir numara. O değiştirilmemelidir.
dwHttpStatusCode
İstek yapıldığında geçerli hareketin durumu. Aşağıdakilerden biri olabilir:
lpszLogData
Arabellek boyutu hse_log_buffer_len. Geçerli hareketin ISA için belirli bir günlük biten bilgi dize içerir. Bu günlük bilgileri http sunucusu günlüğüne girilir. http sunucusu hem ISA hareketleri ile tek bir günlük dosyasında muhafaza yönetim açısından çok yararlı.
lpszMethod
İsteği ile yapıldığı yöntemi. Bu CGI değişkenine istek_yöntemi eşdeğerdir.
lpszQueryString
nbsp;Sorgu bilgileri içeren boş sonlandırılmış dize. Bu CGI değişkenine QUERY_STRI&NG eşdeğerdir.
lpszPathInfo
İstemci tarafından verilen ilave yol bilgilerini içeren boş sonlandırılmış dize. Bu CGI değişkenine PATH_INFO eşdeğerdir.
lpszPathTranslated
Tercüme yolunu içeren boş sonlandırılmış dize. Bu CGI değişkenine path_translated eşdeğerdir.
cbTotalBytes
İstemcide&n alınan bayt sayısı. Bu CGI değişkenine content_lengtheşdeğerdir. Bu değer olarak 0xffffffff kullanılır, sonra orada dört gigabayt veya daha fazla kullanılabilir data.nbsp; Daha fazla veri döndürülünceye kadar CHttpServerContext::ReadClient bu durumda çağrılmalıdır.
cbAvailable
LpbDatatarafından kullanılabilir bayt sayısı (dışarı cbTotalBytestoplamı) arabellek işaret etti. CbTotalBytes cbAvailable değişken aynı ise lpbData istemci tarafından gönderilen tüm verileri içeren bir arabellek işaret eder. Aksi halde cbTotalBytes , alınan veri baytları sayısı içerecektir. ISA sonra ( cbAvailablezamanyna başlayarak) verileri geri kalanını okumak için CHttpServerContext::ReadClient işlev kullanmanız gerekir.
lpbData
İstemci tarafından gönderilen verileri içeren boyutu cbAvailable bir ara noktaları.
lpszContentType
İstemci tarafından gönderilen verileri içerik türünü içeren boş sonlandırılmış dize. Bu CGI değişkenine içerik_türü eşdeğerdir.
GetServerVariable
Bu işlev, bir http bağlantısı veya sunucunun kendisi, içine bir arabellek (CGI değişkenleri dahil) bilgileri ilgili kopyalar. GetServerVariable aşağıdaki parametreleri alır:
| Değişken adı | Açıklama |
| ALL_HTTP | Zaten yukarıdaki değişkenlerin birine ayrıştırılır değil tüm http üstbilgileri. Bu değişkenleri formu HTTP_lt; üstbilgi alan adı & gt var. |
| AUTH_PASS | Bu istemci tarafından sağlanan gibi remote_user için karşılık gelen parolayı alır. Biten bir dize olacaktır. |
| AUTH_TYPE | Kimlik doğrulama used.nbsp türünü içerir; Örneğin, temel kimlik doğrulaması kullanılıyorsa, dize "Basic" olacaktır. Windows &NT sınama / yanıt için "ntlm" olacak. Diğer kimlik doğrulama şemaları diğer dizeler olacak. Çünkü yeni kimlik doğrulama türleri Internet sunucusuna eklenebilir, tüm olası dizeleri listelemek mümkün değildir. Dize boş ise daha sonra kimlik doğrulaması kullanılır. |
| CONTENT_LENGTH | Komut istemciden almayı bekleyebileceğiniz bayt sayısı. |
| İÇERİK_TÜRÜ | Post isteğinin gövdesinde sağlanacak bilgiler içerik türü. |
| GATEWAY_INTERFACE | Gözden geçirme için bu sunucuya uyar CGI belirtimi. Geçerli CGI/1.1 sürümüdür. |
| HTTP_ACCEPT | Özel durum http üstbilgisi. Accept değerleri: alanları birleştirilmiş, ayrılmış ",". Örneğin, aşağıdaki satırlar http başlığının bir parçasıdır
http_accept değişken değeri daha sonra olacak:
|
| PATH_INFO | İstemci tarafından verilen ek yol bilgisi. Bu URL'nin sonundaki parçası komut dosyası adından sonra ancak önce sorgu dizesi (varsa) oluşur. |
| PATH_TRANSLATED | Bu değer PATH_INFO, ama dizin belirtimine genişletilmiş herhangi bir sanal yol adına sahip olduğunu. |
| QUERY_STRING | Bu komut başvurulan url ? takip bilgileri. |
| REMOTE_ADDR | İstemci IP adresi. |
| REMOTE_HOST | İstemci ana bilgisayar adı. |
| REMOTE_USER | Bu, istemci tarafından sağlanan ve sunucu tarafından kimliği doğrulanan kullanıcı adı içerir. |
| REQUEST_METHOD | Http istek yöntemi. |
| SCRIPT_NAME | Yürütülen komut programın adı. |
| SUNUCU_ADİ | Sunucunun ana bilgisayar adını (veya IP adresi) olarak URL kendineba?vuran içinde görünmelidir. |
| SERVER_PORT | İsteğin alındığı TCP/IP bağlantı noktası. |
| SERVER_PROTOCOL | Adı ve bu isteğine ilişkin bilgi alma protokolü sürümü. Normalde http/1.0. |
| SERVER_SOFTWARE | CGI programının çalıştığı web sunucusu sürümü ve adı. |
WriteClient
Bilgileri, belirtilen arabellek için istemciye gönderir. WriteClient aşağıdaki parametreleri alır:
ReadClient
Bilgileri Web istemci http isteğinin gövdesinden içine çağıran tarafından sağlanan arabelleği okur. ReadClient aşağıdaki parametreleri alır:
ServerSupportFunction
Dia bazı genel amaçlı işlevlerinin yanı sıra http sunucusu uygulaması için belirli işlevleri sağlar. ServerSupportFunction aşağıdaki parametreleri alır:
Yorumlar
Bir su&nucu dosyaları extensionsnbsp ile tanımlar;.exe ve.CGI (Common Gateway Interface) yürütülebilir bat. Ayrıca, bir sunucu bir dosya dll uzantısı ile çalıştırmak üzere bir komut dosyası tanımlayacak.
Sunucu dll dosyasını yüklediğinde, dll Giriş noktasında thenbsp sürüm numarasını almak için CHttpServer::GetExtensionVersion çağırır; ISA temel HTTP_FILTER_REVISIO&N ve sunucu yöneticileri için kısa bir metin açıklaması. Her istemci isteği için CHttpServer::HttpExtensionProc giriş noktası denir. Sorgu dizesi, yol bilgi, yöntem adı ve tercüme yolu gibi sık ihtiyaç duyulan bilgileri uzantısı alır.
Ayrıca bkz: CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc