以上的版本来应用这项技术。您不可能在16位的编辑器上应用它。
HTTPEXT.PAS包含了微软公司创立的ISAPI技术的接口[注:指Delphi接口,ISAPI由C++编写(译者)]。在编写
Delphi的时候并没有提供ISAPI的用户接口,我会仅仅就如何使用微软公司的现有技术进行描述。不过,ISAPI
太容易使用了,而且对大多数用户来说,用户的Delphi对象的版本并不是必须的。
有三个函数可作为ISAPI DLLs的入口,前两个是必须的,第三个时可选的。
GetExtensionVersion: 进对最低版本做检查
HttpExtensionProc: 这是DLL的入口,就象是Delphi应用程序中的 begin...end 块
TerminateExtension: 这是个可选的程序,它可以用作清除其他内存分配的线程。
当您在创建ISAPI DLL的时候,您必须引用上面列出的三个函数中的头两个函数,执行这两个函数是所有ISAPI
编程的关键。
这三个语句都包含了“字输出”,使用这项术语是因为ISAPI DLLs扩充了因特网信息服务器。(记住,因特网
信息服务器指的是微软服务器。如果您要把一台NT服务器作为体格网页服务器的话,那么,这正是您所需的工
具。ISAPI DLLs随NT4.0分发,在安装操作
系统是自动安装。)
ISAPI提供了一个制作服务器可遵循的标准。例如,它可以把网景公司的复杂的NSAPI接口压缩至相关的简练而
优美的ISAPI来对NSAPI接口进行操作。
下面是这两个重要函数的声明
function GetExtensionVersion(var Ver: THSE_VERSION_INFO): BOOL; stdcall;
function HttpExtensionProc(var ECB: TExtensionControlBlock): DWORD; stdcall;
您只要把GetExtensionVersion粘贴到您的DLLs救行了.当ISAPI向公众发布新版本时您只需要做轻微的改动。
function GetExtensionVersion(var Ver: THSE_VERSION_INFO):
BOOL; stdcall;
begin
Ver.dwExtensionVersion := $00010000; // 1.0 support
Ver.lpszExtensionDesc := 'Delphi 2.0 ISAPI DLL'; // Description
Result := True;
end;
The parameter passed to this function is declared in HTTPEXT.PAS as follows:
有关的参数在HTTPEXT.PAS中声明如下:
PHSE_VERSION_INFO = ^THSE_VERSION_INFO;
THSE_VERSION_INFO = packed record
dwExtensionVersion: DWORD;
lpszExtensionDesc: array[0..HseMaxExtDLLNameLen-1] of Char;
end;
常量 HseMaxExtDllNameLen 在声明中的值为256。纪录中的这两个变量是“自声明”的,前一个包含了
ISAPI的版本号[注:即变量dwExtensionVersion (译者)],后一个则表示用户定义的一个用来描述
DLLs的字符串。
在您引用GetExtensionVersion语句的同时,您必须在您的DLL程序的DPR文件部分增添输出部分。在您写
这段语句时您还应该写下:
exports
GetExtensionVersion,
HttpExtensionProc;
这就是您在建立这两个重要ISAPI DLL的函数时所要做的。下一步,使用 HttpExtensionProc,稍微复杂一
点,因此我将把它作为一个独立的部分。
与 HttpExtensionProc 一起工作
HttpExtensionProc语句是DLL的入口。它的作用就好比C语言中的 main() 语句,或者Delphi 中的
begin...end 部分
这里有一个简单的使用GetExtensionVersion语句的例子
function HttpExtensionProc(var ECB: TExtensionControlBlock):
DWORD; stdcall;
var
ResStr: string;
StrLen: Integer;
begin
ECB.lpszLogData := 'Delphi DLL Log';
ECB.dwHTTPStatusCode := 200;
ResStr := '' +
'
Test server results
' +
'Hello from ISAPI
' +
'';

发表评论