EXTENSION_CONTROL_BLOCK โครงสร้าง

โครงสร้างของEXTENSION_CONTROL_BLOCKมีแบบฟอร์มต่อไปนี้:

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;

เซิร์ฟเวอร์ที่มีการสื่อสารกับ ISA ที่ผ่านEXTENSION_CONTROL_BLOCK?

การอ้างอิงในการเข้าและออกข้างต้นบ่งชี้ว่า สมาชิกนำไปใช้กับข้อความ เพื่อใช้ส่วนขยาย (IN) หรือ จากส่วนขยาย (OUT)?

สมาชิก

โครงสร้างของEXTENSION_CONTROL_BLOCKประกอบด้วยเขตข้อมูลต่อไปนี้:

cbSize

ขนาดของโครงสร้างนี้?

dwVersion

Ofnbsp ข้อมูลรุ่น HTTP_FILTER_REVISION HIWORDมีหมายเลขรุ่นหลัก และLOWORDมีหมายเลขรุ่นรอง(&N)?

ConnID

nbspหมายเลขเฉพาะที่กำหนด โดยเซิร์ฟเวอร์ HTTP จะต้องไม่ถูกปรับเปลี่ยน(&N)?

dwHttpStatusCode

สถานะของธุรกรรมปัจจุบันที่เมื่อเสร็จสิ้นการร้องขอ อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

lpszLogData

บัฟเฟอร์มีขนาดHSE_LOG_BUFFER_LEN ประกอบด้วยการหยุดการทำงานเป็น null ล็อกข้อมูลสต ISA ของธุรกรรมปัจจุบันเฉพาะ ข้อมูลการล็อกนี้จะถูกป้อนในล็อกเซิร์ฟเวอร์ HTTP รักษาบันทึกแฟ้มเดียวกับทั้งเซิร์ฟเวอร์ HTTP และธุรกรรม ISA เป็นประโยชน์อย่างมากสำหรับการดูแล?

lpszMethod

วิธีการที่ถูกทำการร้องขอ นี้จะเท่ากับตัวแปร CGI REQUEST_METHOD?

lpszQueryString

nbspสิ้นสุดด้วย null สายประกอบด้วยการสอบถามข้อมูล นี้จะเท่ากับตัวแปร CGI QUERY_STRING(&N)?

lpszPathInfo

สิ้นสุดด้วย null สายประกอบด้วยข้อมูลเกี่ยวกับเส้นทางพิเศษที่กำหนด โดยไคลเอ็นต์ นี้จะเท่ากับตัวแปร CGI PATH_INFO?

lpszPathTranslated

สิ้นสุดด้วย null สายประกอบด้วยเส้นทางที่แปล นี้จะเท่ากับตัวแปร CGI PATH_TRANSLATED?

cbTotalBytes

จำนวนไบต์ที่จะได้รับจากไคลเอ็นต์ นี่คือเท่ากับตัวแปร CGI CONTENT_LENGTH ถ้าค่านี้เป็น 0xffffffff แล้วมีกิกะไบต์สี่หรือมากกว่ามี data.nbsp ในกรณีนี้CHttpServerContext::ReadClientควรเรียกจนกระทั่งมีการส่งคืนไม่มีข้อมูลเพิ่มเติม(&N)?

cbAvailable

มีจำนวนไบต์ (จากทั้งหมดของcbTotalBytes) ในบัฟเฟอร์ชี้ไปตามlpbData ถ้าcbTotalBytesเหมือนกันเป็นcbAvailableตัวแปรlpbDataจะชี้ไปที่การบัฟเฟอร์ที่ประกอบด้วยข้อมูลทั้งหมดถูกส่ง โดยไคลเอ็นต์ มิฉะนั้นcbTotalBytesจะประกอบด้วยจำนวนไบต์ของข้อมูลที่ได้รับ ISA จำเป็นต้องใช้ฟังก์ชันเรียกกลับCHttpServerContext::ReadClientการอ่านส่วนเหลือของข้อมูล (การเริ่มต้นจากการออฟเซตของcbAvailable) แล้ว?

lpbData

ประเด็นการบัฟเฟอร์ของขนาดcbAvailableที่มีข้อมูลถูกส่ง โดยไคลเอ็นต์?

lpszContentType

สิ้นสุดด้วย null สายประกอบด้วยชนิดเนื้อหาของข้อมูลที่ส่ง โดยไคลเอ็นต์ นี้จะเท่ากับตัวแปร CGI CONTENT_TYPE?

GetServerVariable

ฟังก์ชันนี้คัดลอกข้อมูล (รวมถึงตัวแปร CGI) เกี่ยวข้องกับ การเชื่อมต่อแบบ HTTP หรือเซิร์ฟเวอร์เอง ลงในบัฟเฟอร์ GetServerVariableใช้พารามิเตอร์ต่อไปนี้:

WriteClient

ส่งข้อมูลไปยังไคลเอ็นต์จากบัฟเฟอร์ที่ระบุ WriteClientใช้พารามิเตอร์ต่อไปนี้:

ReadClient

อ่านข้อมูลจากเนื้อความของการร้องขอ HTTP ของไคลเอ็นต์เว็บลงในบัฟเฟอร์ที่ระบุให้ โดยที่ผู้เรียก ReadClientใช้พารามิเตอร์ต่อไปนี้:

ServerSupportFunction

ให้ ISAs ด้วยบางฟังก์ชันกับงานทั่วไปเช่นเดียวกับฟังก์ชันการใช้งานเซิร์ฟเวอร์ HTTP ServerSupportFunctionใช้พารามิเตอร์ต่อไปนี้:

ความคิดเห็น

เซิร์ฟเวอร์ที่ระบุแฟ้มกับ extensionsnbspEXE และBAT เป็น CGI (Common Gateway Interface) executables นอกจากนี้ เซิร์ฟเวอร์จะระบุแฟ้มที่ มีนามสกุล DLL เป็นสคริปต์การดำเนินการ(&N)?

เมื่อเซิร์ฟเวอร์โหลด DLL เรียก DLL ที่จุดที่CHttpServer::GetExtensionVersionเพื่อรับหมายเลขรุ่นของ thenbsp HTTP_FILTER_REVISION ISA จะยึดและคำอธิบายข้อความสั้น ๆ สำหรับผู้ดูแลเซิร์ฟเวอร์ สำหรับทุกคำขอของไคลเอ็นต์ จุดCHttpServer::HttpExtensionProcถูกเรียก นามสกุลได้รับข้อมูลที่จำเป็นประจำเช่นสายอักขระแบบสอบถาม path info ชื่อเมธอด และเส้นทางแปลแล้ว(&N)?

ดูเพิ่มเติมnbspCHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc(&N)

Index