オペレーティング システムの複数バージョンのサポート
通常、ドライバー パッケージでは、多くのバージョンの Windows オペレーティング システムがサポートされます。 複数のバージョンのオペレーティング システムのサポートの一環として、新機能を利用したり、新しいバージョンのオペレーティング システムの新しい要件を満たしたりするためにドライバー パッケージにさまざまなバージョンのオペレーティング システムでのさまざまな動作が必要になる場合があります。 たとえば、Windows ドライバーの要件を満たすために、特定のバージョン以降のオペレーティング システムでドライバー パッケージにさまざまな動作が必要になる場合があります。 次のセクションでは、ドライバー パッケージの INF ファイルと、ドライバー パッケージのバイナリのランタイム動作での両方に異なる動作を設定する方法について説明します。
INF のサポート
INF の「INF モデルセクション」の TargetOSVersion 装飾を使用すると、INF 作成者はオペレーティング システムのバージョンごとに異なるインストール手順と設定を指定できます。
詳細については、「プラットフォーム拡張機能とオペレーティング システム バージョンを組み合わせる」を参照してください。
ランタイム サポート
実行時に動作を変更して複数のバージョンのオペレーティング システムをサポートするようにする場合、コードが特定のバージョン以降のオペレーティング システムで実行されているかどうかを確認するのではなく、可能な場合には常に機能または API の可用性を確認することをお勧めします。 たとえば、使用できれば使用したい API がある場合、それに静的にリンクするのではなく、その動的な指定を試みることができます。 それを指定でき、使用できるが、現在の実行中の環境に存在しない場合は、別の何らかの動作にフォールバックできます。
カーネル モード
カーネル モードの場合、1 つのドライバーで複数バージョンの Windows をサポートする方法について詳しくは、「異なるバージョンの Windows に対するドライバーの作成」を参照してください。
ユーザー モード
ユーザー モードの場合、LoadLibraryEx と共に GetProcAddress を使用して、使用する特定の API が現在の実行中の環境で使用できるかどうかを確認し、その API を呼び出すために使用する関数ポインターを取得できます。 詳細については、「ランタイム動的リンク」と「ランタイム動的リンクの使用」を参照してください。