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;

EXTENSION_CONTROL_BLOCK ÅëÇØ ISA¿Í Åë½Å ÇÏ´Â ¼­¹ö¡£

¹Û¿¡ ¼­ À§ÀÇ¿¡ ´ë ÇÑ ÂüÁ¶ ȸ¿ø È®Àå (IN) ¶Ç´Â È®Àå (¹Û)¿¡¼­ ¸Þ½ÃÁö¿¡ Àû¿ë µÇ´ÂÁö ¿©ºÎ¸¦ ³ªÅ¸³À´Ï´Ù.

ȸ¿ø

EXTENSION_CONTROL_BLOCK ±¸Á¶Ã¼¿¡´Â ´ÙÀ½ Çʵ尡 Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù.:

cbSize

ÀÌ ±¸Á¶Ã¼ÀÇ Å©±â¡£

dwVersion

¹öÀü Á¤º¸¸¦ ofnbsp; HTTP_FILTER_REVISION. HIWORD ´Â ÁÖ ¹öÀü ¹øÈ£°¡ °í LOWORD ´Â ºÎ ¹öÀü ¹øÈ£(&N)¡£

ConnID

nbsp;HTTP ¼­¹ö¿¡ ÀÇÇØ ÇÒ´ç µÈ °íÀ¯ ¹øÈ£ÀÔ´Ï´Ù. ¼öÁ¤ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù(&N).

dwHttpStatusCode

¿äûÀÌ ¿Ï·á µÇ ¸é ÇöÀç Æ®·£Àè¼ÇÀÇ »óÅÂÀÔ´Ï´Ù. ´ÙÀ½ Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.:

lpszLogData

HSE_LOG_BUFFER_LENÅ©±âÀÇ ¹öÆÛÀÔ´Ï´Ù. ÇöÀç Æ®·£Àè¼ÇÀÌ ISA¿¡ null Á¾·á ·Î±× Á¤º¸ ¹®ÀÚ¿­À» Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ ·Î±× Á¤º¸´Â 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 À̸é´Â °æ¿ì 4gb ÀÌ»óÀÇ »ç¿ë °¡´ÉÇÑ 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

HTTP ¼­¹ö ±¸Çö¿¡ °ü·Ã µÈ ±â´É »Ó¸¸ ¾Æ´Ï¶ó ¸î °¡Áö ¹ü¿ë ÇÔ¼ö¸¦ ¿ìÁÖ °úÇÐ ¿¬±¸¼Ò¸¦ Á¦°ø ÇÕ´Ï´Ù. ServerSupportFunction Àº ´ÙÀ½ ¸Å°³ º¯¼ö:

ÄÚ¸àÆ®

Extensionsnbsp;¿Í ÆÄÀÏÀ» ½Äº° ÇÏ´Â ¼­¹ö.EXE¿Í.CGI (Common Gateway Interface) ½ÇÇàÀ¸·Î ÀüÅõ. ¶ÇÇÑ, ¼­¹ö ½Äº° ÆÄÀÏ DLL È®Àå¸íÀ» °¡Áø ½ÇÇà ½ºÅ©¸³Æ®(&N)¡£

¼­¹ö DLLÀ» ·Îµå ÇÏ´Â °æ¿ì¿¡ DLL ÁøÀÔÁ¡ thenbsp;ÀÇ ¹öÀü ¹øÈ£¸¦ CHttpServer::GetExtensionVersion ¿¡¼­ È£Ãâ HTTP_FILTER_REVISION ISA ±â¹ÝÀ¸·Î ¹× ¼­¹ö °ü¸®ÀÚ¿¡ ´ë ÇÑ ÂªÀº ÅØ½ºÆ® ¼³¸í. ¸ðµç Ŭ¶óÀÌ¾ðÆ® ¿äû¿¡ ´ë ÇÑ CHttpServer::HttpExtensionProc ÁøÀÔÁ¡ÀÌ È£Ã⠵˴ϴÙ. È®Àå º¯È¯µÈ °æ·Î, ¸Þ¼­µå À̸§, °æ·Î Á¤º¸, Äõ¸® ¹®ÀÚ¿­ µî ÀϹÝÀûÀ¸·Î ÇÊ¿äÇÑ Á¤º¸¸¦ ¼ö½Å(&N)¡£

Âü°í Ç׸ñnbsp;CHttpServerContext::ReadClient, CHttpServer::GetExtensionVersion, CHttpServer::HttpExtensionProc(&N)

Index