Программирование в IIS




Построение остальных элементов XML


После обработки функции HttpExtensionProc значения заголовка ALL_HTTP остальные серверные переменные обрабатываются с помощью функции GetECBElement (см. листинг 5.7). Каждая серверная переменная, передаваемая в GetECBElement, извлекается с помощью функции GetServerVariable и записывается в элемент XML, присоединяемый к строке, на которую указывает psElement. Указатель psElement указывает на документ XML, конструируемый в HttpExtensionProc.

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Name:GetECBElement

In: pECB - Pointer to the extension control block for the purposes of calling the GetServerVariable function.

sName - string name of the server variable that is being sought.

psElement - string pointer to XML document being built that will be updated with the name and value for the server variable extracted from the extension control block.

Out: nothing returned but the string psElement points to will be updated.

Purpose: appends a string of an XML element to the string psElement points to. The XML element that is created is in the form of <Server Variable Name>Server Variable Value</Server Variable Name>

for example: <GATEWAY_INTERFACE>CGI/1.1</GATEWAY_INTERFACE> + newline

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ void GetECBElement( EXTENSION_CONTROL_BLOCK *pECB, const string &sName, string *psElement) {

TCHAR szTempBuffer[BUFFER_LENGTH]; DWORD dwBufferSize = BUFFER_LENGTH;

//get the server variable value if (pECB->GetServerVariable( pECB->ConnID, (LPSTR)sName.c_str(), szTempBuffer, &dwBufferSize)) { //build the XML element and //add it to the XML document passed in psElement->append(string(XML_L) + sName + string(XML_R));

psElement->append(ValidateValue((string)szTempBuffer));

psElement->append(string(XML_L_END) + sName + string(XML_R) + string(NEW_LINE)); }

}

Листинг 5.7. Function GetECBElement

Функция ValidateValue проверяет, что специальные символы указаны с помощью альтернативных комбинаций символов.


Содержание  Назад  Вперед