none
Windows7のGetAddrInfoWの動作について RRS feed

  • 質問

  • Windows7SP1でGetAddrInfoWを実行したとき、存在しないホスト名を指定すると 戻り値 11004(WSANO_DATA)が返る場合があります。

    WS2TCPIP.Hの /* Error codes from getaddrinfo() */の部分で

    WSANO_DATAを使用しているEAI_NODATAはコメントアウトされ

    >//#define EAI_NODATA      WSANO_DATA

    >#define EAI_NONAME      WSAHOST_NOT_FOUND

    以下のコメントと共に再定義されています。

    >//
    >//  DCR_FIX:  EAI_NODATA remove or fix
    >//
    >//  EAI_NODATA was removed from rfc2553bis
    >//  need to find out from the authors why and
    >//  determine the error for "no records of this type"
    >//  temporarily, we'll keep #define to avoid changing
    >//  code that could change back;  use NONAME
    >//

    >#define EAI_NODATA      EAI_NONAME

    現状、同一の処理をVista SP2 , XP SP3で実行した場合、WSANO_DATAは返ってきません。

    Windows7のBugなのでしょうか。 発生要因等をご存じの方がいましたら、よろしくお願いいたします。

     

     

    2012年1月4日 5:41

すべての返信

  • 正しいか自信はありませんが。

    コメントにDCRとついているので、おそらくDesign Change Request(仕様変更)を受けて、Windows 7で仕様が変わったのではないかと想像します。この仕様変更の根拠がヘッダのコメントにある記述なのでしょう。

    RFC2553によりEAI_NODATAが定義されていたのですが、RFC 3493に置き換わって、EAI_NODATAが消えてしまったようですね。従来のソースを救うためにEAI_NODATAがEAI_NONAMEで定義されているのではないかと思います。

    2012年1月4日 16:09