【问题标题】:Cannot read status of NetBIOS无法读取 NetBIOS 的状态
【发布时间】:2014-11-28 11:25:20
【问题描述】:

我们在 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

代码保持不变,多年来一直有效。我错过了什么吗?

【问题讨论】:

  • 您在哪个操作系统版本上看到了这个?请出示代码。
  • @TomBrunberg 我更新了问题

标签: delphi delphi-2007 netbios


【解决方案1】:

MSDN 表示 Windows 7 不支持 Netbios:

“Netbios 在 Windows Vista、Windows Server 2008 和 操作系统的后续版本”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2019-11-04
    相关资源
    最近更新 更多