SetupDiInstallDevice 関数 (setupapi.h)
SetupDiInstallDevice 関数は、DIF_INSTALLDEVICEインストール要求の既定のハンドラーです。
構文
WINSETUPAPI BOOL SetupDiInstallDevice(
[in] HDEVINFO DeviceInfoSet,
[in, out] PSP_DEVINFO_DATA DeviceInfoData
);
パラメーター
[in] DeviceInfoSet
インストールするデバイスを表す デバイス情報 要素を含むローカル システムのデバイス情報セットのハンドル。
[in, out] DeviceInfoData
DeviceInfoSet のデバイス情報要素を指定するSP_DEVINFO_DATA構造体へのポインター。 DeviceInfoData のため、これは IN-OUT パラメーターです。DevInst は、戻り時に新しいハンドル値で更新される場合があります。
戻り値
成功した場合、この関数は TRUE を 返します。 それ以外の場合は FALSE を 返し、ログに記録されたエラーは GetLastError の呼び出しで取得できます。
注釈
SetupDiInstallDevice は、INF ファイルからドライバーをインストールします。 SetupAPI の "driver" の定義は、実際には "ドライバー ノード" です。したがって、この関数は、ドライバーをインストールするときに、次の一覧の項目もインストールします。
- デバイスのサービス。
- ドライバー ファイル。
- デバイス固有の共同インストーラー (存在する場合)。
- プロパティ ページ プロバイダー (存在する場合)。
- コントロール パネル アプレット (ある場合)。
正常にインストールされた場合、次の手順が含まれますが、これらに限定されません。
- レジストリに ドライバー キー を作成し、適切なエントリ ( InfPath や ProviderName など) を書き込みます。
- デバイスの INF DDInstall セクション を見つけて処理します。 セクションは、OS/アーキテクチャ固有の場合があります。 DDInstall セクションの AddReg エントリと DelReg エントリは、デバイスのソフトウェア キーに送信されます。 DDInstall を見つけて処理します。AddReg エントリと DelReg エントリがデバイスのハードウェア キーに送信される HW セクション。 INF DDInstall.LogConfigOverride セクション (存在する場合) を見つけて処理し、デバイスのオーバーライド構成を指定します。 INF DDInstall.Services セクションを見つけて処理して、デバイスのサービスを追加します (不要になった古いサービスが削除される可能性があります)。
- INF ファイルをシステム INF ディレクトリにコピーします。
-
デバイスのインストール パラメーターのフラグ設定に基づいて、他のファイル操作を実行する可能性があります。
DI_NOFILECOPY フラグとDI_NOVCP フラグが クリアされている場合は、 DDInstall セクションで指定されたファイル操作を実行します。 DI_NOVCP フラグが設定されている場合は、ファイル操作をキューに入れます。
DI_NOFILECOPY フラグが設定されている場合は、ファイルをコピーしないでください。 このフラグは、たとえば、このデバイスのインストールに 対してDIF_INSTALLDEVICEFILES 操作が既に実行されている場合に設定できます。
- デバイスのドライバーを読み込みます。 これには、ファンクション ドライバーと、上位または下位のフィルター ドライバーが含まれます。
- ドライバーの AddDevice ルーチンを呼び出します。
- IRP_MN_START_DEVICE I/O 要求パケット (IRP) を送信して、デバイスを起動します。
クラス インストーラーは、 DIF_INSTALLDEVICE要求を 処理するときに、ERROR_DI_DO_DEFAULTを返すか、この関数を呼び出す必要があります。 この関数は、デバイスのインストールのために多くのタスクを実行し、タスクの一覧が今後のリリースで拡張される可能性があります。 クラス インストーラーがこの関数を呼び出さずにデバイスのインストールを実行する場合、クラス インストーラーがオペレーティング システムの将来のバージョンで正しく動作しない可能性があります。
Windows でデバイスの INF ファイルが見つからない場合は、 null ドライバーをインストールしようとしてDIF_INSTALLDEVICEが送信されます。 SetupDiInstallDevice は 、デバイスが 未加工モード をサポートしているか、PnP 以外のデバイス ( IoReportDetectedDevice によって報告) である場合にのみ、null ドライバーをインストールします。 詳細については、「 DIF_INSTALLDEVICE」を参照してください。
DI_FLAGSEX_SETFAILEDINSTALL フラグが SP_DEVINSTALL_PARAMS 構造体に設定されている場合、 SetupDiInstallDevice は デバイスの ConfigFlags レジストリ値に FAILEDINSTALL フラグを設定するだけです。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Microsoft Windows 2000 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | setupapi.h (Setupapi.h を含む) |
Library | Setupapi.lib |
[DLL] | Setupapi.dll |