SetupDiBuildDriverInfoList 関数 (setupapi.h)

SetupDiBuildDriverInfoList 関数は、特定のデバイスまたはデバイス情報セットのグローバル クラス ドライバー リストに関連付けられているドライバーの一覧を作成します。

構文

WINSETUPAPI BOOL SetupDiBuildDriverInfoList(
  [in]      HDEVINFO         DeviceInfoSet,
  [in, out] PSP_DEVINFO_DATA DeviceInfoData,
  [in]      DWORD            DriverType
);

パラメーター

[in] DeviceInfoSet

すべての デバイス情報 要素に対してグローバルに、または単一のデバイス情報要素に対して、ドライバーの一覧を格納するように設定されたデバイス情報のハンドル。 デバイス情報セットには、リモート デバイス情報要素を含めてはなりません。

[in, out] DeviceInfoData

ドライバー リストをビルドするデバイスを表す DeviceInfoSet 内のデバイス情報要素のSP_DEVINFO_DATA構造体へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。 このパラメーターを指定すると、リストは指定したデバイスに関連付けられます。 このパラメーターが NULL の場合、リストは DeviceInfoSet のグローバル クラス ドライバー リストに関連付けられます。

互換性のあるドライバー リスト DeviceInfoData を構築したために、このデバイスのクラスが更新された場合。ClassGuid は、戻り時に更新されます。

[in] DriverType

ビルドするドライバー リストの種類。 次のいずれかの値を指定する必要があります。

意味
SPDIT_CLASSDRIVER
クラス ドライバーの一覧を作成します。 DeviceInfoDataNULL の場合、このドライバー リストの種類を指定する必要があります。
SPDIT_COMPATDRIVER
互換性のあるドライバーの一覧を作成します。 このドライバー リストの種類が指定されている場合、DeviceInfoDataNULL にすることはできません。

戻り値

成功した場合、この関数は TRUE を 返します。 それ以外の場合は FALSE を 返し、 GetLastError を呼び出すことでログに記録されたエラーを取得できます。

注釈

SetupDiBuildDriverInfoList はローカル コンピューター上でのみドライバーを検索するため、デバイス情報セットはローカル コンピューター用である必要があります。 デバイス情報セットがリモート コンピューター用の場合、関数は TRUE を 返しますが、実際にはデバイス情報セットの既存のドライバー 一覧を更新しません。指定されている場合は、デバイス情報要素のドライバー 一覧を更新します。

呼び出し元は、デバイス情報セットまたは特定のデバイス (DeviceInfoData) に関連付けられているSP_DEVINSTALL_PARAMSフラグを設定して、リストの作成方法を制御できます。 たとえば、呼び出し元は、選択から除外とマークされているドライバーを含むように DI_FLAGSEX_ALLOWEXCLUDEDDRVS フラグを設定できます。

ドライバーが INF ファイルで ExcludeFromSelect とマークされている場合、またはセットアップ クラス全体がクラス インストーラー INF ファイルで NoInstallClass または NoUseClass とマークされているデバイスのドライバーである場合、ドライバーは "選択から除外" されます。 PnP デバイスのドライバーは、通常、"選択から除外" です。PnP デバイスを手動でインストールしないでください。 PnP デバイスのドライバー ファイルの一覧を作成するには、 SetupDiBuildDriverInfoList の呼び出し元がこのフラグを設定する必要があります。

SP_DEVINSTALL_PARAMSDriverPath には、INF ファイルを含むディレクトリのパスまたは特定の INF ファイルのパスが含まれています。 DI_ENUMSINGLEINFが設定されている場合、DriverPath には 1 つの INF ファイルのパスが含まれます。 DriverPathNULL の場合、この関数は既定の INF ファイルの場所 %SystemRoot%\inf からドライバーの一覧をビルドします。

この関数によって指定されたドライバー リストがビルドされた後、呼び出し元は SetupDiEnumDriverInfo を呼び出すことによって、リストの要素を列挙できます。

ドライバーの一覧がデバイス インスタンスに関連付けられている場合 (つまり、 DeviceInfoData が指定されています)、結果の一覧は、関連付けられているデバイス インスタンスと同じクラスを持つドライバーで構成されます。 これがグローバル クラス ドライバー リストである場合 (つまり、 DriverTypeSPDIT_CLASSDRIVER され、 DeviceInfoData が指定されていません)、リストの作成時に使用されるクラスは、デバイス情報セットに関連付けられているクラスです。 デバイス情報セットにクラスが関連付けられていない場合は、リストの作成時にすべてのクラスのドライバーが使用されます。

別のスレッドは、 SetupDiCancelDriverInfoSearch の呼び出しによってドライバー リストのビルドを終了できます。

DeviceInfoSet には、ローカル コンピューター上の要素のみが含まれている必要があります。 この関数は、ローカル ドライバーのみを検索します。

要件

要件
サポートされている最小のクライアント Microsoft Windows 2000 以降のバージョンの Windows で使用できます。
対象プラットフォーム デスクトップ
Header setupapi.h (Setupapi.h を含む)
Library Setupapi.lib
[DLL] Setupapi.dll
API セット ext-ms-win-setupapi-classinstallers-l1-1-1 (Windows 8.1 で導入)

こちらもご覧ください

SetupDiCancelDriverInfoSearch

SetupDiDestroyDriverInfoList

SetupDiEnumDriverInfo