Checkv4.exe ユーティリティの使用

重要

Checkv4.exe ユーティリティは、Windows 8 用 Windows ソフトウェア開発キット (SDK) や、それ以降のバージョンの Windows SDK には含まれていません。

Checkv4.exe ユーティリティは、コード移植パートナーを提供できるように設計されています。このユーティリティは、ユーザーと一緒にコード ベースを使用して手順を実行し、潜在的な問題の特定または IPv6 対応の機能や構造からメリットを得られるコードの強調表示を行い、推奨事項を作成します。 Checkv4.exe ユーティリティを使用すると、既存の IPv4 アプリケーションを IPv6 をサポートするように変更するタスクがはるかに簡単になります。

Checkv4.exe ユーティリティは、Windows Vista 用 Microsoft Windows ソフトウェア開発キット (SDK) とそれ以降の SDK (Windows 8 用 Windows ソフトウェア開発キット (SDK) まで) の一部としてインストールされます。

機能制限の多い前のバージョンの Checkv4.exe ユーティリティも、前の Microsoft IPv6 Technology Preview for Windows 2000 の一部として提供されていました。

以降のセクションでは、Checkv4.exe ユーティリティの使用方法について説明し、既存の IPv4 アプリケーションを IPv6 をサポートするように変更するための推奨アプローチについて説明します。

Checkv4.exe の実行に関する推奨事項

  • Checkv4.exe ユーティリティは簡単です。 パラメーターとして確認するファイルの名前を使用して、コマンド ラインで Checkv4.exe を実行するだけです。 Checkv4.exe はファイルを解析し、そのファイル内のどこに IPv6 移植の問題が存在するかについてフィードバックを提供します。 Checkv4.exe をコンピューターのパスに配置すると、ソース コード ディレクトリ構造内のどこからでも Checkv4.exe ユーティリティを簡単に実行できるようになります。 たとえば、Checkv4.exe を %windir% に配置すると、パスを指定せずにコンピュータ上の任意のディレクトリから Checkv4.exe を起動できるようになります。

  • コマンド プロンプトで次のコマンドを発行して、Simplec.c ファイルを解析します。

    Checkv4 simplec.c

    Checkv4.exe ユーティリティによって作成された推奨事項の一部では、SOCKADDR_IN6 構造体など、Ws2tcpip.h ヘッダー ファイルの最新バージョンでのみ使用可能な構造体が必要であることに注意してください。 これらのヘッダー ファイルは、Windows Vista 以降用にリリースされた Windows SDK に含まれています。 これらのヘッダー ファイルは、Windows Server 2003 用にリリースされた以前のプラットフォーム ソフトウェア開発キット (SDK) にも含まれています。

    次のスクリーン ショットは、付録 A に含まれる Simplec.c ファイルに対して Checkv4.exe ユーティリティを使用した結果を示しています。

    checkv4.exeは、simplec.c ファイル内の ipv6 非互換性を報告します

    次のスクリーン ショットは、付録 A にも含まれている Simples.c ファイルに対して Checkv4.exe ユーティリティを使用した結果を示しています。

    checkv4.exeは、simples.c ファイル内の ipv6 非互換性を報告します

アプリケーション変更プロセス: 開始する場所

アプリケーションに IPv6 機能を追加することに関連する推奨手順があります。 開発者が、既存の IPv4 アプリケーションを IPv6 をサポートするように変更するのに必要なすべての手順を確実に実行できるため、この手順に従うことは有益です。 特定のアプリケーションでは、これらのシーケンスの 1 つに対して、他よりも広範囲にわたる注意が必要になる場合があります。たとえば、システム サービスでは、グラフィカル ファイル転送プログラム (FTP) よりもユーザー インターフェイスのほうが生じる問題が少ない可能性があります。

IPv6 をサポートするように IPv4 アプリケーションを変更するには

  1. 構造体と宣言を修正して IPv6 と IPv4 の互換性を有効にします。

  2. getaddrinfo 関数や getnameinfo 関数など、IPv6 対応の関数を利用できるように関数呼び出し変更します。

  3. ループバック アドレスなどのハードコードされた IPv4 アドレスの使用、またはその他のリテラル文字列の使用について、ソース コードを確認します。

  4. 情報ダイアログ ボックスを含むユーザー インターフェイスを徹底的に確認します。 IPv6 対応アプリケーションが IP アドレス ベースの情報を指定または提供することが適切かどうかをよく考えてください。

  5. アプリケーションが RPC などの基になるプロトコルに依存しているかどうかを判断したうえで、適切なプログラム変更を加えて IPv6 アドレスを処理します。

  6. Windows XP 以降でアプリケーションをコンパイルするときは、コンパイル時フラグ IPV6STRICT を使用します。 このフラグを使用すると、次のように互換性のないコードはコンパイルに失敗します。

    互換性のないコードを持つ Windows Sockets 1.x アプリケーションはコンパイルに失敗し、「WINSOCK2 が必要です」というエラー メッセージを返します。

    互換性のないコードを持つ Windows Sockets 2.x アプリケーションでは、互換性のないコードのインスタンスごとにコンパイル時エラーが発生します。 エラー メッセージは次の形式で生成されます。

    [file name] ([line number]) : [error message] '[symbol]_IPV6INCOMPATIBLE'

    次に例を示します。

    sample.c(8) : error C2065: 'gethostbyaddr_IPV6INCOMPATIBLE' : undeclared identifier