次の方法で共有


SetupDiCreateDeviceInfoA 関数 (setupapi.h)

SetupDiCreateDeviceInfo 関数は、新しいデバイス情報要素を作成し、指定したデバイス情報セットに新しいメンバーとして追加します。

構文

WINSETUPAPI BOOL SetupDiCreateDeviceInfoA(
  [in]            HDEVINFO         DeviceInfoSet,
  [in]            PCSTR            DeviceName,
  [in]            const GUID       *ClassGuid,
  [in, optional]  PCSTR            DeviceDescription,
  [in, optional]  HWND             hwndParent,
  [in]            DWORD            CreationFlags,
  [out, optional] PSP_DEVINFO_DATA DeviceInfoData
);

パラメーター

[in] DeviceInfoSet

ローカル コンピューターの デバイス情報セットへのハンドル。

[in] DeviceName

完全な デバイス インスタンス ID ("Root*PNP0500\0000" など) またはルート列挙 デバイス ID 列挙子プレフィックスとインスタンス識別子サフィックス (例: "*PNP0500") を提供する NULL で終わる文字列へのポインター。 ルート列挙デバイス識別子は、DICD_GENERATE_ID フラグが CreationFlags パラメーターで指定されている場合にのみ使用できます。

[in] ClassGuid

デバイスの GUID を デバイス セットアップ クラスへのポインター。 デバイスのデバイス セットアップ クラスが不明な場合は、*ClassGuid を GUID_NULL 構造体に設定します。

[in, optional] DeviceDescription

デバイスのテキスト説明を提供する NULL で終わる文字列へのポインター。 このポインターは省略可能であり、NULLできます。

[in, optional] hwndParent

デバイスのインストールに関連するすべてのユーザー インターフェイスに使用する最上位ウィンドウへのハンドル。 このハンドルは省略可能であり、NULLできます。

[in] CreationFlags

デバイス情報要素の作成方法を制御する DWORD 型の変数。 次の値の組み合わせを指定できます。

DICD_GENERATE_ID

このフラグが指定されている場合、DeviceName にはルート列挙 デバイス ID のみが含まれており、システムはその ID を使用して、新しいデバイス情報要素の完全な デバイス インスタンス ID を生成します。

SetupDiGetDeviceInstanceId 呼び出して、このデバイス情報要素に対して生成されたデバイス インスタンス ID を取得します。

DICD_INHERIT_CLASSDRVS

このフラグが指定されている場合、結果のデバイス情報要素は、デバイス情報セットに関連付けられているクラス ドライバーの一覧 (存在する場合) を継承します。 さらに、デバイス情報セットに対して選択されたドライバーがある場合は、その同じドライバーが新しいデバイス情報要素に対して選択されます。

[out, optional] DeviceInfoData

新しいデバイス情報要素を受け取る SP_DEVINFO_DATA 構造体へのポインター。 このポインターは省略可能であり、NULLできます。 構造体が指定されている場合、呼び出し元は、関数を呼び出す前に、この構造体の cbSize メンバーを sizeof(SP_DEVINFO_DATA) に設定する必要があります。 詳細については、次の 解説 セクションを参照してください。

戻り値

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

備考

この関数の呼び出し元は、Administrators グループのメンバーである必要があります。

このデバイス インスタンスが、関連付けられたクラスを持つセットに追加されている場合、デバイス クラスは同じである必要があります。そうしないと、呼び出しが失敗します。 この場合、GetLastError を 呼び出すと、ERROR_CLASS_MISMATCHが返されます。

指定したデバイス インスタンスがレジストリ内の既存のデバイス インスタンス キーと同じ場合、呼び出しは失敗します。 この場合、GetLastError を 呼び出すと、ERROR_DEVINST_ALREADY_EXISTSが返されます。 これは、DICD_GENERATE_ID フラグが設定されていない場合にのみ発生します。

新しいデバイス情報要素が正常に作成されたが、呼び出し元が指定した DeviceInfoData バッファーが無効な場合、この関数は FALSE返します。 この場合、GetLastError を 呼び出すと、ERROR_INVALID_USER_BUFFERが返されます。 ただし、デバイス情報要素は、既にセットの新しいメンバーとして追加されています。

DeviceInfoSet には、ローカル コンピューター上の要素のみが含まれている必要があります。

手記

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

必要条件

要件 価値
サポートされる最小クライアント Microsoft Windows 2000 以降のバージョンの Windows で使用できます。
ターゲット プラットフォーム の デスクトップ
ヘッダー setupapi.h (Setupapi.h を含む)
ライブラリ Setupapi.lib

関連項目

SP_DEVINFO_DATA

SetupDiDeleteDeviceInfo の

SetupDiEnumDeviceInfo の

SetupDiOpenDeviceInfo の