1

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

コードは変更されておらず、何年も前から機能しています。私は何か見落としてますか?

4

1 に答える 1

3

MSDNによると、Netbios は Windows 7 ではサポートされていません。

「Netbios は、Windows Vista、Windows Server 2008、およびそれ以降のバージョンのオペレーティング システムではサポートされていません」

于 2014-11-28T12:41:14.723 に答える