
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
	<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head><card id="MainCard" title="&#x6B22;&#x8FCE;&#x5149;&#x4E34;"><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a><br/>&nbsp;</p><p><b>&#x6807;&#x9898;&#x3A;</b> &#x49;&#x49;&#x53;&#x7684;&#x49;&#x53;&#x41;&#x50;&#x49;&#x63A5;&#x53E3;&#x7B80;&#x4ECB;</p><p><b>&#x4F5C;&#x8005;&#x3A;</b> &#x64;&#x6E;&#x61;&#x77;&#x6F;</p><p><b>&#x65E5;&#x671F;&#x3A;</b> &#x32;&#x30;&#x31;&#x30;&#x2D;&#x31;&#x32;&#x2D;&#x30;&#x33;&#x20;&#x30;&#x35;&#x3A;&#x33;&#x34;&#x20;&#x50;&#x4D;</p><p><b>&#x5206;&#x7C7B;&#x3A;</b> <a href="wap.asp?do=showLog&amp;cateID=7">&#x670D;&#x52A1;&#x5668;</a></p><p><b>&#x5185;&#x5BB9;&#x3A;</b> ISAPI(Internet Server Application Programming Interface)&#x4F5C;&#x4E3A;&#x4E00;&#x79CD;&#x53EF;&#x7528;&#x6765;&#x66FF;&#x4EE3;CGI&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x662F;&#x7531;&#x5FAE;&#x8F6F;&#x548C;Process&#x8F6F;&#x4EF6;&#x516C;&#x53F8;&#x8054;&#x5408;&#x63D0;&#x51FA;&#x7684;Web&#x670D;&#x52A1;&#x5668;&#x4E0A;&#x7684;API&#x6807;&#x51C6;&#x3002;ISAPI&#x4E0E;Web&#x670D;&#x52A1;&#x5668;&#x7ED3;&#x5408;&#x7D27;&#x5BC6;&#xFF0C;&#x529F;&#x80FD;&#x5F3A;&#x5927;&#xFF0C;&#x80FD;&#x591F;&#x83B7;&#x5F97;&#x5927;&#x91CF;&#x7684;&#x4FE1;&#x606F;&#xFF0C;&#x56E0;&#x6B64;&#x5229;&#x7528;ISAPI&#x53EF;&#x4EE5;&#x5F00;&#x53D1;&#x51FA;&#x7075;&#x6D3B;&#x9AD8;&#x6548;&#x7684;Web&#x670D;&#x52A1;&#x5668;&#x589E;&#x5F3A;&#x7A0B;&#x5E8F;&#x3002;&#x7531;&#x4E8E;ISAPI&#x7A0B;&#x5E8F;&#x4E0E;Web&#x670D;&#x52A1;&#x5668;&#x7684;&#x5173;&#x7CFB;&#xFF0C;&#x4F7F;&#x5F97;ISAPI&#x63A5;&#x53E3;&#x5728;&#x5B89;&#x5168;&#x65B9;&#x9762;&#x6709;&#x4E00;&#x5B9A;&#x7684;&#x7814;&#x7A76;&#x4EF7;&#x503C;&#x3002;&#x672C;&#x6587;&#x4E3B;&#x8981;&#x8BA8;&#x8BBA;ISAPI&#x5728;IIS&#x548C;VC++ 6.0&#x4E2D;&#x7684;&#x5B9E;&#x73B0;&#x3002; <br/>&#x4E00;&#x3001;ISAPI&#x63A5;&#x53E3;&#x548C;CGI&#x63A5;&#x53E3;&#x7684;&#x4E0D;&#x540C;<br/>ISAPI&#x7A0B;&#x5E8F;&#x548C;CGI&#x7A0B;&#x5E8F;&#x5B8C;&#x6210;&#x7C7B;&#x4F3C;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x4F46;&#x662F;&#x5B9E;&#x73B0;&#x65B9;&#x6CD5;&#x4E0D;&#x540C;&#x3002; <br/>1&#x3001;ISAPI&#x7A0B;&#x5E8F;&#x4EE5;DLL&#x5F62;&#x5F0F;&#x88AB;Web&#x670D;&#x52A1;&#x5668;&#x52A0;&#x8F7D;&#x5230;&#x81EA;&#x5DF1;&#x7684;&#x8FDB;&#x7A0B;&#x7A7A;&#x95F4;&#x4E2D;&#xFF0C;&#x56E0;&#x6B64;&#x548C;&#x670D;&#x52A1;&#x5668;&#x5171;&#x7528;&#x540C;&#x4E00;&#x4E2A;&#x5730;&#x5740;&#x7A7A;&#x95F4;&#xFF0C;&#x4E14;&#x5728;&#x6CA1;&#x6709;&#x5BA2;&#x6237;&#x8BF7;&#x6C42;&#x65F6;&#x53EF;&#x4EE5;&#x5C06;&#x5176;&#x4ECE;&#x5185;&#x5B58;&#x4E2D;&#x5378;&#x8F7D;&#xFF1B;&#x800C;&#x5BF9;&#x5BA2;&#x6237;&#x7AEF;&#x53D1;&#x6765;&#x7684;&#x6BCF;&#x4E2A;&#x5BF9;CGI&#x7A0B;&#x5E8F;&#x7684;&#x8BF7;&#x6C42;&#x5219;&#x9700;&#x8981;&#x670D;&#x52A1;&#x5668;&#x4E3A;&#x5B83;&#x5355;&#x72EC;&#x542F;&#x52A8;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#xFF0C;&#x8FD9;&#x9700;&#x8981;&#x8017;&#x8D39;&#x5927;&#x91CF;&#x7684;&#x65F6;&#x95F4;&#x548C;&#x5185;&#x5B58;&#x3002;&#x5F53;&#x5E76;&#x53D1;&#x7684;&#x8BF7;&#x6C42;&#x6570;&#x76EE;&#x5F88;&#x5927;&#x65F6;&#xFF0C;&#x4F7F;&#x7528;CGI&#x5728;&#x6548;&#x7387;&#x4E0A;&#x4E0D;&#x5982;ISAPI&#x3002; <br/>2&#x3001;CGI&#x7A0B;&#x5E8F;&#x901A;&#x8FC7;&#x73AF;&#x5883;&#x5757;&#x548C;&#x6807;&#x51C6;&#x8F93;&#x5165;&#x8F93;&#x51FA;&#x4E0E;Web&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#xFF0C;&#x800C;ISAPI&#x7A0B;&#x5E8F;&#x4E0E;&#x670D;&#x52A1;&#x5668;&#x7ED3;&#x5408;&#x5F97;&#x66F4;&#x4E3A;&#x7D27;&#x5BC6;&#xFF0C;&#x4E0E;&#x670D;&#x52A1;&#x5668;&#x5171;&#x4EAB;&#x540C;&#x4E00;&#x4E2A;&#x8FDB;&#x7A0B;&#x4E0A;&#x4E0B;&#x6587;&#xFF0C;&#x4E3B;&#x8981;&#x901A;&#x8FC7;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#x5757;&#x4E0E;&#x670D;&#x52A1;&#x5668;&#x8FDB;&#x884C;&#x4EA4;&#x4E92;&#xFF0C;&#x53EF;&#x4EE5;&#x4ECE;&#x670D;&#x52A1;&#x5668;&#x90A3;&#x91CC;&#x83B7;&#x5F97;&#x5173;&#x4E8E;&#x5F53;&#x524D;HTTP&#x8FDE;&#x63A5;&#x7684;&#x5927;&#x91CF;&#x4FE1;&#x606F;&#x3002; <br/>ISAPI&#x4E3B;&#x8981;&#x5206;&#x4E3A;ISA&#x548C;ISAPI Filter&#x4E24;&#x90E8;&#x5206;&#x3002;ISA&#x65B9;&#x6CD5;&#x76F8;&#x5BF9;&#x800C;&#x8A00;&#x8981;&#x4F20;&#x7EDF;&#x4E00;&#x4E9B;&#xFF0C;&#x5229;&#x7528;&#x4E00;&#x4E9B;&#x7279;&#x6B8A;&#x7684;&#x94FE;&#x63A5;&#xFF0C;&#x6307;&#x5411;&#x670D;&#x52A1;&#x5668;&#x7684;&#x4F5C;&#x4E1A;&#xFF0C;&#x4F9B;&#x7A0B;&#x5E8F;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x8BBE;&#x8BA1;&#x4E00;&#x4E9B;&#x6269;&#x5C55;&#x529F;&#x80FD;&#xFF1B;&#x800C;ISAPI&#x8FC7;&#x6EE4;&#x5668;&#x5219;&#x503E;&#x5411;&#x4E8E;&#x6784;&#x9020;&#x670D;&#x52A1;&#x5668;&#x76F4;&#x63A5;&#x8C03;&#x7528;&#x7684;&#x6A21;&#x5757;&#xFF0C;&#x63D0;&#x4F9B;&#x4E00;&#x79CD;&#x65E0;&#x7F1D;&#x94FE;&#x63A5;&#x90E8;&#x4EF6;&#x7528;&#x4E8E;&#x76D1;&#x6D4B;&#x76F4;&#x63A5;&#x6765;&#x81EA;&#x4E8E;&#x670D;&#x52A1;&#x5668;&#x7684;HTTP&#x8BF7;&#x6C42;&#x3002; <br/>&#x4E8C;&#x3001;ISA <br/>ISA(Internet Server Application)&#x4E5F;&#x53EF;&#x79F0;&#x4E3A;ISAPI DLL&#xFF0C;&#x5176;&#x529F;&#x80FD;&#x548C;CGI&#x7A0B;&#x5E8F;&#x7684;&#x529F;&#x80FD;&#x76F4;&#x63A5;&#x76F8;&#x5BF9;&#x5E94;&#xFF0C;&#x4F7F;&#x7528;&#x65B9;&#x6CD5;&#x548C;CGI&#x4E5F;&#x7C7B;&#x4F3C;&#xFF0C;&#x7531;&#x5BA2;&#x6237;&#x7AEF;&#x5728;URL&#x4E2D;&#x6307;&#x5B9A;&#x5176;&#x540D;&#x79F0;&#x800C;&#x6FC0;&#x6D3B;&#x3002;&#x4F8B;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x8BF7;&#x6C42;&#x5C06;&#x8C03;&#x7528;&#x670D;&#x52A1;&#x5668;&#x7684;&#x865A;&#x62DF;&#x53EF;&#x6267;&#x884C;&#x76EE;&#x5F55;Scripts&#x4E0B;&#x7684;function.dll(ISAPI DLL&#x5FC5;&#x987B;&#x653E;&#x5728;&#x670D;&#x52A1;&#x5668;&#x7684;&#x865A;&#x62DF;&#x53EF;&#x6267;&#x884C;&#x76EE;&#x5F55;&#x4E0B;)&#xFF1A; <br/>http://www.abc.com/Scri&#112;ts/function.dll? <br/>ISA&#x548C;&#x670D;&#x52A1;&#x5668;&#x4E4B;&#x95F4;&#x7684;&#x63A5;&#x53E3;&#x4E3B;&#x8981;&#x6709;&#x4E24;&#x4E2A;&#xFF1A;GetExtentionVersion()&#x548C;HttpExtentionProc()&#x3002;&#x4EFB;&#x4F55;ISA&#x90FD;&#x5FC5;&#x987B;&#x5728;&#x5176;PE&#x6587;&#x4EF6;&#x5934;&#x7684;&#x5F15;&#x51FA;&#x8868;&#x4E2D;&#x5B9A;&#x4E49;&#x8FD9;&#x4E24;&#x4E2A;&#x5F15;&#x51FA;&#x51FD;&#x6570;&#xFF0C;&#x4EE5;&#x4F9B;Web&#x670D;&#x52A1;&#x5668;&#x5728;&#x9002;&#x5F53;&#x7684;&#x65F6;&#x5019;&#x8C03;&#x7528;&#x3002; <br/>1&#x3001;&#x5F53;&#x670D;&#x52A1;&#x5668;&#x521A;&#x52A0;&#x8F7D;ISA&#x65F6;&#xFF0C;&#x5B83;&#x4F1A;&#x8C03;&#x7528;ISA&#x63D0;&#x4F9B;&#x7684;GetExtentionVersion()&#x6765;&#x83B7;&#x5F97;&#x8BE5;ISA&#x6240;&#x9700;&#x8981;&#x7684;&#x670D;&#x52A1;&#x5668;&#x7248;&#x672C;&#xFF0C;&#x5E76;&#x4E0E;&#x81EA;&#x5DF1;&#x7684;&#x7248;&#x672C;&#x76F8;&#x6BD4;&#x8F83;&#xFF0C;&#x4EE5;&#x4FDD;&#x8BC1;&#x7248;&#x672C;&#x517C;&#x5BB9;&#x3002;&#x51FD;&#x6570;&#x539F;&#x578B;&#x5982;&#x4E0B;&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;BOOL WINAPI GetExtentionVersion(HSE_VERSION_INFO *version)&#xFF1B; <br/>typedef struct _HSE_VERSION_INFO <br/>{ <br/>DWORD dwExtensionVersion; //&#x7248;&#x672C;&#x53F7; <br/>CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN]; //&#x5173;&#x4E8E;ISA&#x7684;&#x63CF;&#x8FF0;&#x5B57;&#x7B26;&#x4E32; <br/>} HSE_VERSION_INFO, *LPHSE_VERSION_INFO;<br/>2&#x3001;ISA&#x7684;&#x771F;&#x6B63;&#x5165;&#x53E3;&#x662F;HttpExtentionProc()&#xFF0C;&#x5B83;&#x76F8;&#x5F53;&#x4E8E;&#x666E;&#x901A;C&#x7A0B;&#x5E8F;&#x7684;main()&#x51FD;&#x6570;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x4E2D;&#x6839;&#x636E;&#x4E0D;&#x540C;&#x7684;&#x5BA2;&#x6237;&#x8BF7;&#x6C42;&#x4F5C;&#x4E0D;&#x540C;&#x7684;&#x5904;&#x7406;&#x3002;&#x670D;&#x52A1;&#x5668;&#x548C;HttpExtentionProc()&#x4E4B;&#x95F4;&#x662F;&#x901A;&#x8FC7;&#x6269;&#x5C55;&#x63A7;&#x5236;&#x5757;(Extention Control Block)&#x6765;&#x8FDB;&#x884C;&#x901A;&#x4FE1;&#x7684;&#xFF0C;&#x5373;ECB&#x4E2D;&#x5B58;&#x653E;&#x5165;&#x53E3;&#x53C2;&#x6570;&#x548C;&#x51FA;&#x53E3;&#x53C2;&#x6570;&#xFF0C;&#x5305;&#x62EC;&#x670D;&#x52A1;&#x5668;&#x63D0;&#x4F9B;&#x7684;&#x51E0;&#x4E2A;&#x56DE;&#x8C03;&#x51FD;&#x6570;&#x7684;&#x5165;&#x53E3;&#x5730;&#x5740;&#x3002;&#x51FD;&#x6570;&#x539F;&#x578B;&#x5982;&#x4E0B;&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;DWORD HttpExtensionProc( EXTENSION_CONTROL_BLOCK *pECB ); <br/>ECB&#x7684;&#x7ED3;&#x6784;&#x5B9A;&#x4E49;&#x5982;&#x4E0B;(IN&#x8868;&#x793A;&#x5165;&#x53E3;&#x53C2;&#x6570;&#xFF0C;OUT&#x8868;&#x793A;&#x51FA;&#x53E3;&#x53C2;&#x6570;)&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;typedef struct _EXTENSION_CONTROL_BLOCK <br/>{ <br/>DWORD cbSize; //IN&#xFF0C;&#x672C;&#x7ED3;&#x6784;&#x7684;&#x5927;&#x5C0F;&#xFF0C;&#x53EA;&#x8BFB; <br/>DWORD dwVersion //IN&#xFF0C;&#x7248;&#x672C;&#x53F7;&#xFF0C;&#x9AD8;16&#x4F4D;&#x4E3A;&#x4E3B;&#x7248;&#x672C;&#x53F7;&#xFF0C;&#x4F4E;16&#x4F4D;&#x4E3A;&#x6B21;&#x7248;&#x672C;&#x53F7; <br/>HCONN ConnID; //IN&#xFF0C;&#x8FDE;&#x63A5;&#x53E5;&#x67C4;&#xFF0C;&#x7531;&#x670D;&#x52A1;&#x5668;&#x5206;&#x914D;&#xFF0C;ISA&#x53EA;&#x80FD;&#x8BFB;&#x53D6;&#x8BE5;&#x503C; <br/>DWORD dwHttpStatusCode; //OUT&#xFF0C;&#x5F53;&#x524D;&#x5B8C;&#x6210;&#x7684;&#x4E8B;&#x52A1;&#x72B6;&#x6001; <br/>CHAR lpszLogData[HSE_LOG_BUFFER_LEN]; //OUT&#xFF0C;&#x9700;&#x8981;&#x5199;&#x5165;&#x5230;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x5185;&#x5BB9; <br/>LPSTR lpszMethod; //IN&#xFF0C;&#x7B49;&#x4EF7;&#x4E8E;CGI&#x7684;&#x73AF;&#x5883;&#x53D8;&#x91CF;REQUEST_METHOD <br/>LPSTR lpszQueryString; //IN&#xFF0C;&#x7B49;&#x4EF7;&#x4E8E;&#x73AF;&#x5883;&#x53D8;&#x91CF;QUERY_STRING <br/>LPSTR lpszPathInfo; //IN&#xFF0C;&#x7B49;&#x4EF7;&#x4E8E;&#x73AF;&#x5883;&#x53D8;&#x91CF;PATH_INFO <br/>LPSTR lpszPathTranslated; //IN&#xFF0C;&#x7B49;&#x4EF7;&#x4E8E;&#x73AF;&#x5883;&#x53D8;&#x91CF;PATH_TRANSLATED <br/>DWORD cbTotalBytes; //IN&#xFF0C;&#x7B49;&#x4EF7;&#x4E8E;&#x73AF;&#x5883;&#x53D8;&#x91CF;CONTENT_LENGTH <br/>DWORD cbAvailable; //IN&#xFF0C;&#x7F13;&#x51B2;&#x533A;&#x4E2D;&#x7684;&#x53EF;&#x7528;&#x5B57;&#x8282;&#x6570; <br/>LPBYTE lpbData; //IN&#xFF0C;&#x7F13;&#x51B2;&#x533A;&#x6307;&#x9488;&#xFF0C;&#x6307;&#x5411;&#x5BA2;&#x6237;&#x7AEF;&#x53D1;&#x6765;&#x7684;&#x6570;&#x636E; <br/>LPSTR lpszContentType; //IN&#xFF0C;&#x7B49;&#x4EF7;&#x4E8E;&#x73AF;&#x5883;&#x53D8;&#x91CF;CONTENT_TYPE <br/>//&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x7528;&#x4E8E;&#x8FD4;&#x56DE;&#x670D;&#x52A1;&#x5668;&#x7684;&#x8FDE;&#x63A5;&#x4FE1;&#x606F;&#x6216;&#x7279;&#x5B9A;&#x7684;&#x670D;&#x52A1;&#x5668;&#x8BE6;&#x7EC6;&#x60C5;&#x51B5; <br/>BOOL ( WINAPI * GetServerVariable ) <br/>( HCONN hConn, <br/>LPSTR lpszVariableName, <br/>LPVOID lpvBuffer, <br/>LPDWORD lpdwSize ); <br/>BOOL ( WINAPI * WriteClient ) //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x4ECE;&#x5BA2;&#x6237;&#x7AEF;&#x7684;HTTP&#x8BF7;&#x6C42;&#x4E2D;&#x8BFB;&#x53D6;&#x6570;&#x636E; <br/>( HCONN ConnID, <br/>LPVOID Buffer, <br/>LPDWORD lpdwBytes, <br/>DWORD dwReserved ); <br/>BOOL ( WINAPI * ReadClient ) //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x5411;&#x5BA2;&#x6237;&#x7AEF;&#x53D1;&#x9001;&#x6570;&#x636E; <br/>( HCONN ConnID, <br/>LPVOID lpvBuffer, <br/>LPDWORD lpdwSize ); <br/>BOOL ( WINAPI * ServerSupportFunction ) //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x8BBF;&#x95EE;&#x670D;&#x52A1;&#x5668;&#x7684;&#x4E00;&#x822C;&#x548C;&#x7279;&#x5B9A;&#x529F;&#x80FD; <br/>( HCONN hConn, <br/>DWORD dwHSERRequest, <br/>LPVOID lpvBuffer, <br/>LPDWORD lpdwSize, <br/>LPDWORD lpdwDataType ); <br/>} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK; <br/>&#x5728;&#x4E0A;&#x8FF0;ECB&#x4E2D;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x4E0D;&#x4F46;&#x63D0;&#x4F9B;&#x4E86;&#x5F53;&#x524D;HTTP&#x8FDE;&#x63A5;&#x7684;&#x53E5;&#x67C4;&#x548C;&#x4E00;&#x4E9B;&#x53D8;&#x91CF;&#xFF0C;&#x800C;&#x4E14;&#x63D0;&#x4F9B;&#x4E86;4&#x4E2A;&#x56DE;&#x8C03;&#x51FD;&#x6570;&#x7ED9;ISA&#x8C03;&#x7528;&#xFF0C;&#x4ECE;&#x800C;&#x4F7F;ISA&#x53EF;&#x4EE5;&#x83B7;&#x5F97;&#x66F4;&#x8BE6;&#x5C3D;&#x7684;&#x4FE1;&#x606F;&#x3002; <br/>&#x4E09;&#x3001;ISAPI Filter <br/>ISAPI Filter&#x4F4D;&#x4E8E;&#x670D;&#x52A1;&#x5668;&#x548C;&#x5BA2;&#x6237;&#x7AEF;&#x4E4B;&#x95F4;&#xFF0C;&#x80FD;&#x591F;&#x5BF9;&#x670D;&#x52A1;&#x5668;&#x548C;&#x5BA2;&#x6237;&#x7AEF;&#x4E4B;&#x95F4;&#x7684;&#x901A;&#x4FE1;&#x8FDB;&#x884C;&#x9884;&#x5904;&#x7406;&#x548C;&#x540E;&#x5904;&#x7406;&#xFF0C;&#x6BD4;&#x5982;&#x5BF9;&#x901A;&#x4FE1;&#x8FDB;&#x884C;&#x52A0;&#x5BC6;/&#x89E3;&#x5BC6;&#x3001;&#x63D0;&#x4F9B;&#x5BF9;&#x5BA2;&#x6237;&#x8FDB;&#x884C;&#x8EAB;&#x4EFD;&#x9A8C;&#x8BC1;&#x7684;&#x65B0;&#x65B9;&#x6CD5;&#x3001;&#x63D0;&#x4F9B;&#x81EA;&#x5B9A;&#x4E49;&#x7684;&#x65E5;&#x5FD7;&#x8BB0;&#x5F55;&#x7B49;&#xFF0C;&#x5728;CGI&#x4E2D;&#x6CA1;&#x6709;&#x4E0E;ISAPI Filter&#x76F4;&#x63A5;&#x76F8;&#x5BF9;&#x5E94;&#x7684;&#x90E8;&#x5206;&#x3002; <br/>ISAPI Filter&#x4E0E;&#x670D;&#x52A1;&#x5668;&#x4E4B;&#x95F4;&#x7684;&#x63A5;&#x53E3;&#x6709;&#x4E24;&#x4E2A;&#xFF1A;GetFilterVersion()&#x548C;HttpFilterProc()&#x3002;&#x4EFB;&#x4F55; <br/>ISAPI Filter&#x90FD;&#x5FC5;&#x987B;&#x5F15;&#x51FA;&#x8FD9;&#x4E24;&#x4E2A;&#x51FD;&#x6570;&#x4EE5;&#x4F9B;&#x670D;&#x52A1;&#x5668;&#x8C03;&#x7528;&#x3002; <br/>1&#x3001;&#x5728;&#x6CE8;&#x518C;&#x8868;&#x7684;&#x5982;&#x4E0B;&#x952E;&#x503C;&#x4E2D;&#x5B58;&#x653E;&#x7740;&#x6240;&#x6709;ISAPI Filter&#x7684;&#x6587;&#x4EF6;&#x540D;&#xFF0C;IIS&#x670D;&#x52A1;&#x5668;&#x542F;&#x52A8;&#x65F6;&#x4ECE;&#x8BE5;&#x952E;&#x503C;&#x4E2D;&#x83B7;&#x5F97; <br/>Filter&#x7684;&#x6587;&#x4EF6;&#x540D;&#x5E76;&#x52A0;&#x8F7D;&#x5B83;&#x4EEC;&#x3002; <br/>HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC/Parameters/FilterDLL <br/>2&#x3001;&#x7136;&#x540E;&#x670D;&#x52A1;&#x5668;&#x8C03;&#x7528;&#x6BCF;&#x4E2A;Filter&#x63D0;&#x4F9B;&#x7684;GetFilterVersion()&#x51FD;&#x6570;&#xFF0C;&#x83B7;&#x5F97;&#x7248;&#x672C;&#x53F7;&#x4EE5;&#x53CA;&#x8BE5;Filter&#x5E0C;&#x671B;&#x5904;&#x7406;&#x7684;&#x4E8B;&#x4EF6;&#xFF0C;&#x5373;ISAPI Filter&#x901A;&#x8FC7;&#x5F15;&#x51FA;GetFilterVersion()&#x51FD;&#x6570;&#x6765;&#x544A;&#x77E5;&#x670D;&#x52A1;&#x5668;&#x81EA;&#x5DF1;&#x5E0C;&#x671B;&#x5904;&#x7406;&#x4EC0;&#x4E48;&#x7C7B;&#x578B;&#x7684;&#x4E8B;&#x4EF6;&#xFF0C;&#x56E0;&#x4E3A;ISAPI Filter&#x662F;&#x901A;&#x8FC7;&#x4E8B;&#x4EF6;&#x6765;&#x6FC0;&#x6D3B;&#x7684;&#xFF0C;&#x5F53;&#x6EE1;&#x8DB3;&#x6761;&#x4EF6;&#x7684;&#x4E8B;&#x4EF6;&#x5230;&#x8FBE;&#x65F6;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x5C31;&#x4F1A;&#x8C03;&#x7528;Filter&#x5F15;&#x51FA;&#x7684;&#x4E3B;&#x51FD;&#x6570;HttpFilterProc()&#x5BF9;&#x8BE5;&#x4E8B;&#x4EF6;&#x8FDB;&#x884C;&#x5904;&#x7406;&#x3002;GetFilterVersion()&#x7684;&#x539F;&#x578B;&#x5982;&#x4E0B;&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;BOOL WINAPI GetFilterVersion( <br/>DWORD dwServerFilterVersion; //IN&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x4F7F;&#x7528;&#x7684;&#x7248;&#x672C;&#x89C4;&#x8303; <br/>DWORD dwFilterVersion; //OUT&#xFF0C;&#x8FC7;&#x6EE4;&#x5668;&#x4F7F;&#x7528;&#x7684;&#x7248;&#x672C;&#x89C4;&#x8303; <br/>CHAR lpszFilterDesc[SF_MAX_FILTER_DESC_LEN+1]; //OUT&#xFF0C;&#x5BF9;&#x8BE5;&#x8FC7;&#x6EE4;&#x5668;&#x7684;&#x63CF;&#x8FF0;&#x5B57;&#x7B26;&#x4E32; <br/>DWORD dwFlags //OUT&#xFF0C;&#x4E8B;&#x4EF6;&#x548C;&#x4F18;&#x5148;&#x7EA7;&#x6807;&#x5FD7; <br/>);<br/>&#x4E8B;&#x4EF6;&#x548C;&#x4F18;&#x5148;&#x7EA7;&#x6807;&#x5FD7;dwFlasg&#x7684;&#x53D6;&#x503C;&#x5728;MSDN&#x4E2D;&#x6709;&#x8BE6;&#x7EC6;&#x89E3;&#x91CA;&#xFF0C;&#x5176;&#x4E2D;&#x5305;&#x62EC;&#x8BE5;Filter&#x88AB;&#x8C03;&#x7528;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;&#x4E00;&#x822C;&#x5E94;&#x4F7F;&#x7528;&#x9ED8;&#x8BA4;&#x7684;&#x4F4E;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;&#x5426;&#x5219;&#x53EF;&#x80FD;&#x4F1A;&#x5BF9;&#x7CFB;&#x7EDF;&#x7684;&#x6027;&#x80FD;&#x9020;&#x6210;&#x5F88;&#x5927;&#x5F71;&#x54CD;&#x3002; <br/>3&#x3001;HttpFilterProc()&#x662F;ISAPI Filter&#x4E3B;&#x8981;&#x7684;&#x5165;&#x53E3;&#x51FD;&#x6570;&#xFF0C;&#x5B83;&#x6839;&#x636E;&#x5F53;&#x524D;&#x7684;&#x4E8B;&#x4EF6;&#x7684;&#x4E0D;&#x540C;&#x4F5C;&#x51FA;&#x4E0D;&#x540C;&#x7684;&#x5904;&#x7406;&#x3002;&#x670D;&#x52A1;&#x5668;&#x901A;&#x8FC7;&#x5982;&#x4E0B;&#x7684;&#x53C2;&#x6570;&#x5757;&#x548C;Filter&#x8FDB;&#x884C;&#x4EA4;&#x4E92;&#xFF0C;&#x8FD9;&#x4E2A;&#x53C2;&#x6570;&#x5757;&#x7684;&#x4F5C;&#x7528;&#x548C;ISA&#x4E2D;&#x7684;ECB&#x7C7B;&#x4F3C;&#x3002; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;typedef struct _HTTP_FILTER_CONTEXT <br/>{ <br/>DWORD cbSize; //IN&#xFF0C;&#x672C;&#x53C2;&#x6570;&#x5757;&#x7684;&#x5927;&#x5C0F; <br/>DWORD Revision; //IN <br/>PVOID ServerContext; //IN&#xFF0C;&#x7531;server&#x4F7F;&#x7528;&#x672C;&#x53C2;&#x6570; <br/>DWORD ulReserved; //IN&#xFF0C;&#x7531;server&#x4F7F;&#x7528;&#x672C;&#x53C2;&#x6570; <br/>BOOL fIsSecurePort; //IN&#xFF0C;&#x4E8B;&#x4EF6;&#x662F;&#x5426;&#x53D1;&#x751F;&#x5728;&#x5B89;&#x5168;&#x7AEF;&#x53E3;&#x4E0A; <br/>PVOID pFilterContext; //IN/OUT&#xFF0C;&#x4E0E;&#x672C;&#x6B21;&#x8BF7;&#x6C42;&#x76F8;&#x5173;&#x7684;&#x4E0A;&#x4E0B;&#x6587; <br/>//&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x53D6;&#x5F97;&#x5173;&#x4E8E;&#x670D;&#x52A1;&#x5668;&#x548C;&#x672C;&#x6B21;&#x8FDE;&#x63A5;&#x7684;&#x4FE1;&#x606F; <br/>BOOL (WINAPI * GetServerVariable) ( <br/>struct _HTTP_FILTER_CONTEXT * pfc, <br/>LPSTR lpszVariableName, <br/>LPVOID lpvBuffer, <br/>LPDWORD lpdwSize <br/>); <br/>BOOL (WINAPI * AddResponseHeaders) ( //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x7ED9;HTTP&#x54CD;&#x5E94;&#x6DFB;&#x52A0;&#x4E00;&#x4E2A;&#x6807;&#x5934; <br/>struct _HTTP_FILTER_CONTEXT * pfc, <br/>LPSTR lpszHeaders, <br/>DWORD dwReserved <br/>); <br/>BOOL (WINAPI * WriteClient) ( //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x5C06;&#x539F;&#x59CB;&#x6570;&#x636E;&#x53D1;&#x9001;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF; <br/>struct _HTTP_FILTER_CONTEXT * pfc, <br/>LPVOID Buffer, <br/>LPDWORD lpdwBytes, <br/>DWORD dwReserved <br/>); <br/>VOID * (WINAPI * AllocMem) ( //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x5206;&#x914D;&#x5185;&#x5B58;&#x3002; <br/>struct _HTTP_FILTER_CONTEXT * pfc, <br/>DWORD cbSize, <br/>DWORD dwReserved <br/>); <br/>BOOL (WINAPI * ServerSupportFunction) ( //&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF0C;&#x8BBF;&#x95EE;&#x670D;&#x52A1;&#x5668;&#x7684;&#x4E00;&#x822C;&#x548C;&#x7279;&#x5B9A;&#x529F;&#x80FD; <br/>struct _HTTP_FILTER_CONTEXT * pfc, <br/>enum SF_REQ_TYPE sfReq, <br/>PVOID pData, <br/>DWORD ul1, <br/>DWORD ul2 <br/>); <br/>} HTTP_FILTER_CONTEXT, *PHTTP_FILTER_CONTEXT; <br/>&#x56DB;&#x3001;VC++ 6.0&#x4E2D;&#x5BF9;ISAPI&#x7684;&#x652F;&#x6301; <br/>VC++ 6.0&#x4E2D;&#x5B9A;&#x4E49;&#x4E86;5&#x4E2A;&#x76F8;&#x5173;&#x7684;&#x7C7B;&#x4EE5;&#x7B80;&#x5316;ISAPI&#x7684;&#x7F16;&#x7A0B;&#x5DE5;&#x4F5C;&#xFF1A;CHttpServer&#x3001;CHttpServerContext&#x3001;CHttpFilter&#x3001;CHttpFilterContext&#x3001;CHtmlStream&#xFF0C;&#x8FD9;5&#x4E2A;&#x7C7B;&#x90FD;&#x6CA1;&#x6709;&#x7236;&#x7C7B;&#x3002;&#x5176;&#x4E2D;CHttpServer&#x548C;CHttpServerContext&#x4E3B;&#x8981;&#x7528;&#x6765;&#x7F16;&#x5199;ISA&#xFF0C;CHttpFilter&#x548C;CHttpFilterContext&#x5219;&#x7528;&#x6765;&#x7F16;&#x5199;ISAPI Filter&#xFF0C;&#x800C;CHtmlStream&#x5219;&#x7528;&#x6765;&#x64CD;&#x4F5C;&#x5185;&#x5B58;&#x4E2D;&#x7684;HTML&#x6587;&#x4EF6;&#xFF0C;&#x4E3A;&#x5176;&#x5B83;&#x7684;4&#x4E2A;&#x7C7B;&#x63D0;&#x4F9B;&#x670D;&#x52A1;&#x3002;CHttpServer&#x5728;&#x6BCF;&#x4E2A;ISA&#x4E2D;&#x53EA;&#x80FD;&#x6709;&#x4E00;&#x4E2A;&#x5B9E;&#x4F8B;&#xFF0C;&#x4E00;&#x4E2A;CHttpServer&#x53EF;&#x4EE5;&#x5BF9;&#x5E94;&#x591A;&#x4E2A;CHttpServerContext&#x5B9E;&#x4F8B;&#xFF0C;&#x6BCF;&#x4E2A; <br/>CHttpServerContext&#x5904;&#x7406;&#x4E00;&#x4E2A;&#x5BA2;&#x6237;&#x8BF7;&#x6C42;&#xFF0C;&#x8FD9;&#x6837;&#x53EF;&#x4EE5;&#x5904;&#x7406;&#x5E76;&#x53D1;&#x7684;HTTP&#x8BF7;&#x6C42;&#xFF1B;CttpFilter&#x548C;CHttpFilterContext&#x4E4B;&#x95F4;&#x7684;&#x5173;&#x7CFB;&#x4E0E;&#x6B64;&#x7C7B;&#x4F3C;&#xFF0C;&#x5728;&#x6BCF;&#x4E2A;ISAPI Filter&#x4E2D;&#x53EA;&#x80FD;&#x6709;&#x4E00;&#x4E2A;CHttpFilter&#x5B9E;&#x4F8B;&#xFF0C;&#x4F46;&#x662F;&#x53EF;&#x4EE5;&#x6709;&#x591A;&#x4E2A;CHttpFilterContext&#x6765;&#x5904;&#x7406;&#x5E76;&#x53D1;&#x7684;&#x4E8B;&#x4EF6;&#x3002;CHttpServer&#x548C;CHttpFilter&#x662F;&#x72EC;&#x7ACB;&#x7684;&#x7C7B;&#xFF0C;&#x5B83;&#x4EEC;&#x53EF;&#x4EE5;&#x5171;&#x5B58;&#x4E8E;&#x4E00;&#x4E2A;DLL&#x4E2D;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x5206;&#x522B;&#x5728;&#x4E0D;&#x540C;&#x7684;DLL&#x4E2D;&#x3002; <br/>&#x4E00;&#x4E2A;ISA&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x591A;&#x4E2A;&#x547D;&#x4EE4;&#xFF0C;&#x6BCF;&#x4E2A;&#x547D;&#x4EE4;&#x5BF9;&#x5E94;&#x4E8E;CHttpServer(&#x6216;&#x5176;&#x5B50;&#x7C7B;)&#x7684;&#x4E00;&#x4E2A;&#x6210;&#x5458;&#x51FD;&#x6570;&#xFF0C;&#x5BA2;&#x6237;&#x7AEF;&#x53EF;&#x4EE5;&#x5728;URL&#x4E2D;&#x6307;&#x5B9A;&#x547D;&#x4EE4;&#x540D;&#x53CA;&#x5176;&#x53C2;&#x6570;&#x3002;&#x5728;VC++ 6.0&#x4E2D;&#x662F;&#x901A;&#x8FC7;parse map&#x6765;&#x5B9E;&#x73B0;&#x8FD9;&#x79CD;&#x5BF9;&#x5E94;&#x7684;&#x3002; <br/>Parse map&#x7C7B;&#x4F3C;MFC&#x4E2D;&#x7684;Windows&#x6D88;&#x606F;&#x5206;&#x53D1;&#x673A;&#x5236;&#xFF0C;&#x901A;&#x8FC7;&#x4F7F;&#x7528;VC&#x63D0;&#x4F9B;&#x7684;DECLARE_PARSE_MAP&#x3001;BEGIN_PARSE_MAP&#x3001;ON_PARSE_COMMAND&#x3001;ON_PARSE_COMMAND_PARAMS&#x3001;DEFAULT_PARSE_COMMAND&#x3001;END_PARSE_MAP&#x7B49;&#x5B8F;&#xFF0C;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x5BF9;&#x4E0D;&#x540C;&#x7684;&#x547D;&#x4EE4;&#x7684;&#x5904;&#x7406;&#x3002;&#x6BCF;&#x4E2A;CHttpServer&#x4E2D;&#x53EA;&#x80FD;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;parse map&#xFF0C;&#x5F53;&#x5BA2;&#x6237;&#x7AEF;&#x7ED9;ISA&#x53D1;&#x6765;&#x547D;&#x4EE4;&#x7684;&#x65F6;&#x5019;&#xFF0C;parse map&#x53EF;&#x4EE5;&#x5206;&#x6790;HTTP&#x8BF7;&#x6C42;&#x4E2D;&#x7684;&#x547D;&#x4EE4;&#x540D;&#x53CA;&#x5176;&#x53C2;&#x6570;&#xFF0C;&#x5C06;&#x8BE5;&#x547D;&#x4EE4;&#x4E0E;&#x76F8;&#x5E94;&#x7684;&#x6210;&#x5458;&#x51FD;&#x6570;&#x5173;&#x8054;&#x8D77;&#x6765;&#xFF0C;&#x5373;&#x7531;&#x8BE5;&#x6210;&#x5458;&#x51FD;&#x6570;&#x5904;&#x7406;&#x8BE5;&#x547D;&#x4EE4;&#x3002;&#x4EE5;MSDN&#x4E2D;&#x7684;&#x4F8B;&#x5B50;&#x7A0B;&#x5E8F;pinball&#x4E3A;&#x4F8B;&#xFF0C;&#x8BE5;&#x4F8B;&#x4E2D;&#x6709;&#x4E0B;&#x9762;&#x8FD9;&#x6837;&#x4E00;&#x4E2A;&#x8868;&#x5355;&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;&lt;form method=get action=&#x201D;pinball.dll?&#x201D;&gt; <br/>&lt;input type=&#x201D;hidden&#x201D; name=&#x201D;MfcISAPICommand&#x201D; VALUE=&#x201D;GetImage&#x201D;&gt; <br/>&lt;input type=&#x201D;radio&#x201D; name=&#x201D;Favorite&#x201D; value=&#x201D;1&#x2033; checked&gt; Attack from Mars&lt;br&gt; <br/>&lt;input type=&#x201D;radio&#x201D; name=&#x201D;Favorite&#x201D; value=&#x201D;2&#x2033;&gt; Twilight Zone&lt;br&gt; <br/>&lt;input type=&#x201D;radio&#x201D; name=&#x201D;Favorite&#x201D; value=&#x201D;3&#x2033;&gt; The Addams Family&lt;br&gt; <br/>&lt;input type=&#x201D;radio&#x201D; name=&#x201D;Favorite&#x201D; value=&#x201D;4&#x2033;&gt; Cirqus Voltaire&lt;br&gt; <br/>&lt;input type=&#x201D;radio&#x201D; name=&#x201D;Favorite&#x201D; value=&#x201D;0&#x2033;&gt; I don&#x2019;t see it here&lt;br&gt; <br/>&lt;br&gt; <br/>&lt;input type=&#x201D;submit&#x201D; value=&#x201D;Show Me!&#x201D;&gt; <br/>&lt;/form&gt; <br/>&#x5F53;&#x5BA2;&#x6237;&#x7AEF;&#x9009;&#x4E2D;&#x4E86;&#x4E0A;&#x9762;&#x7684;&#x8868;&#x5355;&#x4E2D;&#x7684;&#x201C;Attack from Mars&#x201D;&#x8FD9;&#x4E00;&#x9879;&#x5E76;&#x70B9;&#x51FB;&#x4E86;submit&#x6309;&#x94AE;&#x540E;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x7AEF; <br/>&#x6700;&#x7EC8;&#x5C06;&#x5F97;&#x5230;&#x5982;&#x4E0B;&#x7684;URL&#x4E32;&#xFF1A; <br/>http://www.abc.com/pinball.dll?MfcISAPICommand=GetImage&amp;Favorite=1 <br/>&#x5728;&#x8BE5;URL&#x4E32;&#x4E2D;&#xFF0C;&#x547D;&#x4EE4;&#x540D;&#x662F;GetImage&#xFF0C;&#x53C2;&#x6570;Favorite&#x7684;&#x503C;&#x662F;1&#xFF0C;&#x56E0;&#x6B64;pinball.dll&#x4E2D;&#x7684;&#x5982;&#x4E0B;&#x6210;&#x5458;&#x51FD;&#x6570; <br/>&#x5C06;&#x88AB;&#x8C03;&#x7528;&#x4EE5;&#x5904;&#x7406;&#x8BE5;&#x8BF7;&#x6C42;&#xFF0C;&#x5176;&#x4E2D;&#x53C2;&#x6570;dwChoice&#x5BF9;&#x5E94;URL&#x4E2D;&#x7684;&#x53C2;&#x6570;Favorite&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;void CPinballExtension::GetImage(CHttpServerContext* pCtxt, long dwChoice); <br/>&#x800C;parse map&#x9700;&#x8981;&#x6309;&#x7167;&#x4E0B;&#x9762;&#x7684;&#x5F62;&#x5F0F;&#x5B9A;&#x4E49;&#xFF1A; <br/>&#x590D;&#x5236;&#x5185;&#x5BB9;&#x5230;&#x526A;&#x8D34;&#x677F; &#x7A0B;&#x5E8F;&#x4EE3;&#x7801;//CPinballExtension&#x4ECE;CHttpServer&#x6D3E;&#x751F;&#x800C;&#x6765; <br/>BEGIN_PARSE_MAP(CPinballExtension, CHttpServer) <br/>//GetImage&#x662F;CPinballExtension&#x7684;&#x6210;&#x5458;&#x51FD;&#x6570;&#xFF0C;&#x4E14;&#x6709;&#x4E00;&#x4E2A;long&#x578B;&#x7684;&#x53C2;&#x6570;&#x5373;dwChoice <br/>ON_PARSE_COMMAND(GetImage, CPinballExtension, ITS_I4) <br/>//&#x8BE5;&#x53C2;&#x6570;&#x5728;URL&#x4E2D;&#x7684;&#x540D;&#x5B57;&#x4E3A;Favorite <br/>ON_PARSE_COMMAND_PARAMS(&#x201C;Favorite&#x201D;) <br/>END_PARSE_MAP(CPinballExtension) <br/>&#x800C;&#x5BF9;&#x4E8E;ISAPI Filter&#xFF0C;&#x5728;VC&#x4E2D;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x91CD;&#x8F7D;CHttpFilter(&#x6216;&#x5176;&#x5B50;&#x7C7B;)&#x7684;&#x4E0D;&#x540C;&#x7684;&#x6210;&#x5458;&#x51FD;&#x6570;&#x6765;&#x5B9E;&#x73B0;&#x5BF9;&#x4E0D;&#x540C;&#x4E8B;&#x4EF6;&#x7684;&#x5904;&#x7406;&#x3002;&#x53EF;&#x91CD;&#x8F7D;&#x7684;&#x51FD;&#x6570;&#x5982;&#x4E0B;&#xFF0C;&#x6BCF;&#x4E00;&#x4E2A;&#x6210;&#x5458;&#x51FD;&#x6570;&#x5747;&#x5BF9;&#x5E94;&#x4E00;&#x4E2A;&#x6216;&#x591A;&#x4E2A;&#x4E8B;&#x4EF6;&#xFF1A; <br/> &#x5F15;&#x7528;&#x5185;&#x5BB9;OnPreprocHeaders <br/>OnAuthentication <br/>OnUrlMap <br/>OnSendRawData <br/>OnReadRawData <br/>OnLog <br/>OnEndOfNetSession <br/>MSDN&#x63D0;&#x4F9B;&#x4E86;4&#x4E2A;&#x5173;&#x4E8E;ISAPI&#x7684;&#x7F16;&#x7A0B;&#x5B9E;&#x4F8B;&#xFF1A;counter&#x3001;MFCUCASE&#x3001;pinball&#x3001;wwwquote&#xFF0C;&#x6709;&#x5174;&#x8DA3;&#x7684;&#x53EF;&#x770B;&#x770B;&#xFF0C;&#x672C;&#x6587;&#x4E3B;&#x8981;&#x4E0D;&#x662F;&#x4ECB;&#x7ECD;&#x7F16;&#x7A0B;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x518D;&#x8D58;&#x8FF0;&#x3002; <br/>&#x53C2;&#x8003;&#x8D44;&#x6599; <br/>&#x2460;.MSDN <br/>&#x2461;.&#x300A;&#x7CBE;&#x901A;CGI&#x7F16;&#x7A0B;&#x300B;&#xFF0C;&#x4E01;&#x4E00;&#x5F3A;&#x7B49;&#xFF0C;&#x6E05;&#x534E;&#x5927;&#x5B66;&#x51FA;&#x7248;&#x793E;</p><p> + <a href="#CommentCard">&#x67E5;&#x770B;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x8BC4;&#x8BBA;</a> (0)</p><p>&nbsp;<br/><br/><a href="wap.asp?do=Login">&#x767B;&#x5F55;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.078&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="postCommentCard"><p><b>&#x6807;&#x9898;&#x3A;</b> <a href="#MainCard">&#x49;&#x49;&#x53;&#x7684;&#x49;&#x53;&#x41;&#x50;&#x49;&#x63A5;&#x53E3;&#x7B80;&#x4ECB;</a></p><p><br/>你没有权限发表评论</p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.078&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card><card id="CommentCard"><p>&#x6682;&#x65E0;&#x8BC4;&#x8BBA;</p><p><a href="#MainCard">&#x8FD4;&#x56DE;</a></p><p><br/>&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;</p><p><a href="wap.asp">&#x6728;&#x5B50;&#x5C4B;</a></p><p><a href="http://www.pjhome.net/wap.asp">PJBlog3&nbsp;v3.2.9.518</a>&nbsp;Inside.</p><p>Processed&nbsp;In&nbsp;0.078&nbsp;ms</p><do type="prev" label="&#x8FD4;&#x56DE;"><prev/></do></card>
</wml>
