我们在 Delphi 中的 NetBIOS 代码中有一个(可重现的)错误(似乎)可以工作多年。
使用系统 Windows 7 / 64 位。
我们有一个检查 NetBIOS 是否处于活动状态的例程。我们通过调用 NetBIOS() 并读取返回码来做到这一点。
即使我们通过(单个启用的)网络连接上的 Windows 属性停用了 NetBIOS,对 Netbios(lRec) 的调用仍返回 NRC_GOODRET。
这是重要的代码片段:
Getmem(lNCB, SizeOf(TNCB));
try
Fillchar(lNCB^, SizeOf(TNCB), 0);
Getmem(lLenum, SizeOf(TLanaEnum));
try
Fillchar(lLenum^, SizeOf(TLanaEnum), 0);
Getmem(lAdapter, SizeOf(TAdapterStatus));
try
Fillchar(lAdapter^, SizeOf(TAdapterStatus), 0);
lLenum.Length := chr(0);
lNCB.ncb_command := chr(NCBENUM); // List NetBIOS
lNCB.ncb_buffer := Pointer(lLenum);
lNCB.ncb_length := SizeOf(lLenum);
if Netbios(lNCB) = Char(NRC_GOODRET) then
... We get here, even when NetBIOS is deactiated
代码保持不变,多年来一直有效。我错过了什么?