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
ビルドするドライバー リストの種類。 次のいずれかの値を指定する必要があります。
値 | 意味 |
---|---|
|
クラス ドライバーの一覧を作成します。 DeviceInfoData が NULL の場合、このドライバー リストの種類を指定する必要があります。 |
|
互換性のあるドライバーの一覧を作成します。 このドライバー リストの種類が指定されている場合、DeviceInfoData は NULL にすることはできません。 |
戻り値
成功した場合、この関数は TRUE を 返します。 それ以外の場合は FALSE を 返し、 GetLastError を呼び出すことでログに記録されたエラーを取得できます。
注釈
SetupDiBuildDriverInfoList はローカル コンピューター上でのみドライバーを検索するため、デバイス情報セットはローカル コンピューター用である必要があります。 デバイス情報セットがリモート コンピューター用の場合、関数は TRUE を 返しますが、実際にはデバイス情報セットの既存のドライバー 一覧を更新しません。指定されている場合は、デバイス情報要素のドライバー 一覧を更新します。
呼び出し元は、デバイス情報セットまたは特定のデバイス (DeviceInfoData) に関連付けられているSP_DEVINSTALL_PARAMSでフラグを設定して、リストの作成方法を制御できます。 たとえば、呼び出し元は、選択から除外とマークされているドライバーを含むように DI_FLAGSEX_ALLOWEXCLUDEDDRVS フラグを設定できます。
ドライバーが INF ファイルで ExcludeFromSelect とマークされている場合、またはセットアップ クラス全体がクラス インストーラー INF ファイルで NoInstallClass または NoUseClass とマークされているデバイスのドライバーである場合、ドライバーは "選択から除外" されます。 PnP デバイスのドライバーは、通常、"選択から除外" です。PnP デバイスを手動でインストールしないでください。 PnP デバイスのドライバー ファイルの一覧を作成するには、 SetupDiBuildDriverInfoList の呼び出し元がこのフラグを設定する必要があります。
SP_DEVINSTALL_PARAMSの DriverPath には、INF ファイルを含むディレクトリのパスまたは特定の INF ファイルのパスが含まれています。 DI_ENUMSINGLEINFが設定されている場合、DriverPath には 1 つの INF ファイルのパスが含まれます。 DriverPath が NULL の場合、この関数は既定の INF ファイルの場所 %SystemRoot%\inf からドライバーの一覧をビルドします。
この関数によって指定されたドライバー リストがビルドされた後、呼び出し元は SetupDiEnumDriverInfo を呼び出すことによって、リストの要素を列挙できます。
ドライバーの一覧がデバイス インスタンスに関連付けられている場合 (つまり、 DeviceInfoData が指定されています)、結果の一覧は、関連付けられているデバイス インスタンスと同じクラスを持つドライバーで構成されます。 これがグローバル クラス ドライバー リストである場合 (つまり、 DriverType が SPDIT_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 で導入) |