SP_DEVINSTALL_PARAMS_W構造体 (setupapi.h)

SP_DEVINSTALL_PARAMS構造体には、特定のデバイス情報要素に関連付けられている、またはデバイス情報セットにグローバルに関連付けられているデバイス インストール パラメーターが含まれています。

構文

typedef struct _SP_DEVINSTALL_PARAMS_W {
  DWORD             cbSize;
  DWORD             Flags;
  DWORD             FlagsEx;
  HWND              hwndParent;
  PSP_FILE_CALLBACK InstallMsgHandler;
  PVOID             InstallMsgHandlerContext;
  HSPFILEQ          FileQueue;
  ULONG_PTR         ClassInstallReserved;
  DWORD             Reserved;
  WCHAR             DriverPath[MAX_PATH];
} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;

メンバー

cbSize

SP_DEVINSTALL_PARAMS構造体のサイズ (バイト単位)。

Flags

インストールとユーザー インターフェイスの操作を制御するフラグ。 一部のフラグは、デバイスのインストール要求を送信する前に設定できますが、一部の要求の処理中に他のフラグが自動的に設定されます。 フラグ には、次の値の組み合わせを指定できます。

フラグ値は、 デバイス インストール アプリケーション とインストーラーによる書き込み可能、読み取り専用 (OS によってのみ設定)、予約済み、および古いグループに一覧表示されます。 最初のグループには、書き込み可能なフラグが一覧表示されます。

DI_CLASSINSTALLPARAMS

クラス インストール パラメーターを使用するように 設定します。 SetupDiSetClassInstallParams は、呼び出し元がパラメーターを指定し、呼び出し元が NULL パラメーター ポインターを指定したときにフラグをクリアすると、このフラグを設定します。

DI_COMPAT_FROM_CLASS

SetupDiBuildDriverInfoList を強制的に設定して、INF ファイルではなく、クラス ドライバーの一覧からデバイスの互換性のあるドライバーの一覧をビルドします。

DI_DRIVERPAGE_ADDED

システム提供のドライバー プロパティ ページを置き換えるページがインストーラーによって提供される場合は、クラス インストーラーまたは共同インストーラーによって設定されます。 このフラグが設定されている場合、オペレーティング システムはシステム指定のドライバー ページを表示しません。

DI_DONOTCALLCONFIGMG

特定のデバイス インストール機能 ( SetupDiInstallDevice など) の実行中にデバイスを削除または再び有効にするために、構成マネージャーを呼び出す必要がない場合に設定します。

このフラグが設定されている場合、デバイス インストール アプリケーション、クラス インストーラー、および共同インストーラーは、次の関数を呼び出す必要があります。

CM_Reenumerate_DevNodeCM_Reenumerate_DevNode_ExCM_Query_And_Remove_SubTreeCM_Query_And_Remove_SubTree_ExCM_Setup_DevNodeCM_Setup_DevNode_Ex CM_Set_HW_Prof_Flags_ExCM_Set_HW_Prof_Flags CM_Enable_DevNodeCM_Enable_DevNode_ExCM_Disable_DevNodeCM_Disable_DevNode_Ex

DI_ENUMSINGLEINF

インストーラーやその他の デバイス インストール コンポーネント が、SP_DEVINSTALL_PARAMSで指定された INF ファイルのみを検索する必要があるかどうかを設定します。DriverPath。 このフラグが設定されている場合、 DriverPath にはディレクトリのパスではなく、1 つの INF ファイルのパスが含まれます。

DI_INF_IS_SORTED

[デバイスの選択] ページに、ドライバーをアルファベット順に並べ替えるのではなく、INF ファイルに表示される順序で一覧表示するように設定します。

DI_INSTALLDISABLED

デバイスを既定で無効な状態でインストールする必要があるかどうかを設定します。 認識するには、Windows が DIF_INSTALLDEVICE 要求の既定のハンドラーを呼び出す前に、このフラグを設定する必要があります。

DI_NEEDREBOOT

NT ベースのオペレーティング システムの場合、デバイスのインストール後またはデバイスの状態の変更後にコンピューターを再起動する必要がある場合は、このフラグが設定されます。 クラス インストーラーまたは共同インストーラーは、再起動が必要であるとインストーラーが判断した場合、デバイスのインストール中にいつでもこのフラグを設定できます。

DI_NEEDRESTART

DI_NEEDREBOOTと同じです。

DI_NOBROWSE

ユーザーが OEM ディスク パスを選択しているときに参照を無効にするように設定します。 デバイス インストール アプリケーションは、インストール メディアの場所からのみインストールするようにユーザーを制限するようにこのフラグを設定します。

DI_NODI_DEFAULTACTION

クラス インストーラーがERR_DI_DO_DEFAULTを返すか、クラス インストーラーがない場合に 、SetupDiCallClassInstaller が既定のアクションを実行しないかどうかを設定します。

DI_NOFILECOPY

デバイス のインストール アプリケーションとコンポーネント ( SetupDiInstallDevice など) でファイルのコピーをスキップするかどうかを設定します。

DI_NOVCP

を設定すると、新しいコピー キューの作成が無効になります。 SP_DEVINSTALL_PARAMSで呼び出し元が指定したコピー キューを使用します。FileQueue

DI_NOWRITE_IDS

SetupDiInstallDevice が INF 指定のハードウェア ID と互換性のあるID をデバイス ノード (devnode) のデバイス プロパティに書き込まないように設定します。 このフラグは、ルート列挙デバイスにのみ設定する必要があります。

このフラグは、DI_FLAGSEX_ALWAYSWRITEIDS フラグをオーバーライドします。

DI_PROPERTIES_CHANGE

デバイスのプロパティが変更された場合は、デバイス マネージャーによって設定されます。これには、インストーラーのユーザー インターフェイスの更新が必要です。

DI_QUIETINSTALL

デバイス インストーラー関数をサイレントにし、可能な限り既定の選択肢を使用する必要があるかどうかを設定します。 このフラグが設定されている場合、クラス インストーラーと共同インストーラーでは UI を表示できません。

DI_RESOURCEPAGE_ADDED

システム提供のリソース プロパティ ページを置き換えるページがインストーラーによって提供される場合は、クラス インストーラーまたは共同インストーラーによって設定されます。 このフラグが設定されている場合、オペレーティング・システムはシステム指定のリソース・ページを表示しません。

DI_SHOWOEM

OEM ディスクのサポートを許可するように 設定します。 このフラグが設定されている場合、オペレーティング システムは [デバイスの選択] ページに [ディスクを持つ] ボタンを表示します。 このフラグは、システム指定のウィザードで既定で設定されます。

DI_USECI_SELECTSTRINGS

クラス インストーラーまたは共同インストーラーで 、SetupDiSelectDevice 中に使用する必要がある文字列が指定されているかどうかを設定します。

次のフラグは読み取り専用です (OS によってのみ設定されます)。

DI_DIDCLASS

SetupDiBuildDriverInfoList で、このクラスのデバイスのドライバーの一覧が既に作成されているかどうかを設定します。 このリストが既にビルドされている場合は、すべてのドライバー情報が含まれており、このフラグは常に設定されます。 SetupDiDestroyDriverInfoList は、クラスのドライバーの一覧を削除すると、このフラグをクリアします。

このフラグは読み取り専用です。 オペレーティング システムのみがこのフラグを設定します。

DI_DIDCOMPAT

SetupDiBuildDriverInfoList に、このデバイスの互換性のあるドライバーの一覧が既に作成されているかどうかを設定します。 このリストが既にビルドされている場合は、すべてのドライバー情報が含まれており、このフラグは常に設定されます。 SetupDiDestroyDriverInfoList は、互換性のあるドライバー リストを削除すると、このフラグをクリアします。

このフラグは、デバイス情報セット全体のパラメーターではなく、特定のデバイス情報要素に関連付けられているデバイス インストール パラメーターでのみ設定されます。

このフラグは読み取り専用です。 オペレーティング システムのみがこのフラグを設定します。

DI_MULTMFGS

デバイス セットアップ クラスのドライバーの一覧に複数の製造元によって提供されるドライバーが含まれている場合は、SetupDiBuildDriverInfoList によって設定されます。

このフラグは読み取り専用です。 オペレーティング システムのみがこのフラグを設定します。

次のフラグが予約されています。

DI_AUTOASSIGNRES

DI_DISABLED

DI_FORCECOPY

DI_GENERALPAGE_ADDED

DI_OVERRIDE_INFFLAGS

DI_SHOWALL

DI_SHOWCLASS

DI_SHOWCOMPAT

次のフラグは廃止されています。

DI_NOSELECTICONS

DI_PROPS_NOCHANGEUSAGE

FlagsEx

インストールとユーザー インターフェイスの操作を制御する追加のフラグ。 一部のフラグはデバイス インストーラー関数を呼び出す前に設定できますが、一部の関数の処理中に他のフラグは自動的に設定されます。 FlagsEx には、次の値の組み合わせを指定できます。

フラグ値は、デバイス インストール アプリケーションとインストーラーによる書き込み可能、読み取り専用 (OS によってのみ設定)、予約済み、および古いグループに一覧表示されます。

最初のグループには、書き込み可能なフラグが一覧表示されます。

DI_FLAGSEX_ALLOWEXCLUDEDDRVS

設定されている場合は、"選択から除外" とマークされたドライバーを含めます。

たとえば、このフラグが設定されている場合、 SetupDiSelectDevice は [選択から除外] 状態のドライバーを表示し、 SetupDiBuildDriverInfoList には要求されたドライバーの一覧に [選択したドライバーから除外] が含まれます。

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

DI_FLAGSEX_ALWAYSWRITEIDS

を設定し、DI_NOWRITE_IDS フラグが明確な場合は、常にハードウェア ID と互換性のある ID を devnode のデバイス プロパティに書き込みます。 このフラグは、ルート列挙デバイスにのみ設定する必要があります。

DI_FLAGSEX_APPENDDRIVERLIST

設定すると、 SetupDiBuildDriverInfoList によって新しいドライバー リストが既存のリストに追加されます。 このフラグは、複数の場所を検索する場合に関連します。

DI_FLAGSEX_DRIVERLIST_FROM_URL

設定されている場合は、SP_DEVINSTALL_PARAMSで指定された URL から取得した INF からドライバーの一覧をビルドします。DriverPathDriverPath が空の文字列の場合は、Windows Update Web サイトを使用します。

現在、オペレーティング システムは URL をサポートしていません。 このフラグを使用して、SetupDiBuildDriverInfoList にWindows Update Web サイトを検索するように指示します。

DI_QUIETINSTALLが設定されている場合は、このフラグを設定しないでください。

DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS

設定されている場合は、ドライバー の一覧を構築するときに、古いインターネット ドライバーを含めないでください。 このフラグは、デバイスの潜在的なドライバーの一覧を作成するときにいつでも設定する必要があります。 デバイスに現在インストールされているドライバーの一覧を取得するだけの場合は、このフラグをクリアできます。

DI_FLAGSEX_FILTERCLASSES

設定した場合、SetupDiBuildClassInfoList はクラス包含フィルターに対してチェックされます。 つまり、デバイスのクラスが NoInstallClass としてマークされている場合、デバイスはクラス リストに含まれません。

DI_FLAGSEX_FILTERSIMILARDRIVERS

(Windows XP 以降)。設定されている場合、 SetupDiBuildDriverInfoList には、クラス ドライバーリストを構築するときに "類似した" ドライバーが含まれます。 "類似" ドライバーは、INF ファイル内のハードウェア ID または互換性のある ID の 1 つが、ハードウェア ID またはハードウェアの互換性のある ID のいずれかと一致するドライバーです。

DI_FLAGSEX_FINISHINSTALL_ACTION

(Windows Vista 以降)。詳細については、「 Finish-Install アクションを実行するデバイスとしてマークする 」を参照してください。

DI_FLAGSEX_INET_DRIVER

設定されている場合、ドライバーはインターネットから取得されました。 Windows ではインターネットからドライバー ファイルを再度取得できることを保証できないため、Windows はデバイスの INF を使用して将来のデバイスをインストールしません。

DI_FLAGSEX_INSTALLEDDRIVER

(Windows XP 以降)。設定されている場合、 SetupDiBuildDriverInfoList には、クラス ドライバーまたはデバイス互換ドライバーの一覧を作成するときに、現在インストールされているドライバーのみが含まれます。

DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE

(Windows XP 以降)。設定されている場合、クラス ドライバーの一覧を作成するときに、 SetupDiBuildDriverInfoList は、同じ INF から、同じドライバーの説明とランクを持つドライバーの一覧内のノードをマージしません。

DI_FLAGSEX_NO_DRVREG_MODIFY

デバイスのハードウェアおよびソフトウェア (ドライバー) キーの AddReg エントリと DelReg エントリを処理しないでください。 つまり、INF ファイル DDInstallDDInstallAddReg エントリと DelReg エントリです。HW セクション。

DI_FLAGSEX_POWERPAGE_ADDED

設定すると、インストーラーによって電源プロパティ ダイアログ用の独自のページが追加されます。 オペレーティング システムには、システム提供の電源プロパティ ページは表示されません。 このフラグは、デバイスが電源管理をサポートしている場合にのみ関連します。

DI_FLAGSEX_PROPCHANGE_PENDING

設定した場合、ユーザーは 1 つ以上のデバイス プロパティ シートに変更を加えます。 プロパティ ページ プロバイダーは通常、このフラグを設定します。

ユーザーがデバイス プロパティ シートを閉じると、デバイス マネージャーは DI_FLAGSEX_PROPCHANGE_PENDING フラグを確認します。 設定されている場合、デバイス マネージャーはこのフラグをクリアし、DI_PROPERTIES_CHANGE フラグを設定し、インストーラーにDIF_PROPERTYCHANGE要求を送信して、何かが変更されたことを通知します。

DI_FLAGSEX_RECURSIVESEARCH

(Windows Vista 以降)。設定した場合、 SetupDiBuildDriverInfoListDriverPath 値で指定されたパス内の INF を検索すると、検索は再帰的になります。

DI_FLAGSEX_SEARCH_PUBLISHED_INFS

(Windows Vista 以降)。設定した場合、INF パスまたは検索パスが指定されていない INF を検索するために SetupDiBuildDriverInfoList を使用すると、ドライバー ストアにインポートされた INF のみに検索が制限されます。

DI_FLAGSEX_SETFAILEDINSTALL

インストールに失敗した場合は を設定します。 このフラグが設定されている場合、 SetupDiInstallDevice 関数は、デバイスの ConfigFlags レジストリ値に FAILEDINSTALL フラグを設定するだけです。 DI_FLAGSEX_SETFAILEDINSTALLが設定されている場合、共同インストーラーはDIF_INSTALLDEVICEに応答してNO_ERRORを返す必要があり、クラス インストーラーはNO_ERRORまたはERROR_DI_DO_DEFAULTを返す必要があります。

DI_FLAGSEX_USECLASSFORCOMPAT

互換性のあるドライバーの一覧を作成するときに、デバイスのセットアップ クラスで INF ファイルをフィルター処理します。 デバイスのセットアップ クラスがわかっている場合、このフラグを設定すると、プリコンパイルされていない INF ファイルを検索するときに互換性のあるドライバーの一覧を作成するために必要な時間が短縮されます。 DI_COMPAT_FROM_CLASSが設定されている場合、このフラグは無視されます。

次のフラグは読み取り専用です。オペレーティング システムのみが次のフラグを設定します。

DI_FLAGSEX_CI_FAILED

クラス インストーラーの読み込みまたは起動に失敗した場合に、オペレーティング システムによって設定されます。 このフラグは読み取り専用です。

DI_FLAGSEX_DIDCOMPATINFO

Windows では、デバイスと互換性のある ドライバー ノード の一覧が作成されています。 このフラグは読み取り専用です。

DI_FLAGSEX_DIDINFOLIST

Windows では、指定したセットアップ クラスの INF ファイルに一覧表示されているすべてのドライバーを含むドライバー ノードの一覧が作成されています。 HDEVINFO セットまたはデバイスにクラスが関連付けられていないために、指定したセットアップ クラスが NULL の 場合、一覧には使用可能なすべての INF ファイルのすべてのドライバー ノードが含まれます。 このフラグは読み取り専用です。

DI_FLAGSEX_IN_SYSTEM_SETUP

設定すると、システムの初期セットアップ中にインストールが行われます。 このフラグは読み取り専用です。

次のフラグは予約されており、使用しないでください。

DI_FLAGSEX_ALTPLATFORM_DRVSEARCH

DI_FLAGSEX_BACKUPONREPLACE

DI_FLAGSEX_DEVICECHANGE

DI_FLAGSEX_OLDINF_IN_CLASSLIST

DI_FLAGSEX_PREINSTALLBACKUP

DI_FLAGSEX_RESTART_DEVICE_ONLY

DI_FLAGSEX_USEOLDINFSEARCH

次のフラグは廃止されています。

DI_FLAGSEX_AUTOSELECTRANK0

DI_FLAGSEX_NOUIONQUERYREMOVE

hwndParent

このデバイスに関連するユーザー インターフェイス ダイアログを所有するウィンドウ ハンドル。

InstallMsgHandler

ファイルのコピー中にイベントを処理するために使用されるコールバック。 インストーラーは、たとえば、ファイル キューをコミットするときに特別な処理を実行するコールバックを使用できます。

InstallMsgHandlerContext

InstallMsgHandler コールバックによって使用されるプライベート データ。

FileQueue

ファイル操作をキューに入れる必要があるがコミットされない、呼び出し元が指定したファイル キューへのハンドル。

ファイル キューをデバイス情報セット (SetupDiSetDeviceInstallParams) に関連付ける場合は、デバイス情報セットを削除する前に、デバイス情報セットからキューの関連付けを解除する必要があります。 ファイル キューの関連付けを解除できなかった場合、Windows はデバイス情報セットの参照カウントをデクリメントできず、メモリを解放できません。

このキューは、DI_NOVCP フラグが設定されている場合にのみ使用されます。これは、ファイル操作をエンキューする必要がありますが、コミットしないことを示します。

ClassInstallReserved

クラス インストーラー データのポインター。 共同インストーラーでは、このフィールドを使用しないでください。

Reserved

予約済み。 内部使用専用です。

DriverPath[MAX_PATH]

このパスは、 SetupDiBuildDriverInfoList 関数によって使用されます。

注釈

注意

setupapi.h ヘッダーは、unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとしてSP_DEVINSTALL_PARAMSを定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
Header setupapi.h (Setupapi.h を含む)

こちらもご覧ください

SetupDiBuildClassInfoList

SetupDiBuildDriverInfoList

SetupDiCallClassInstaller

SetupDiGetDeviceInstallParams

SetupDiInstallDevice

SetupDiSelectDevice

SetupDiSetDeviceInstallParams