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

[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 には、ローカル コンピューター上の要素のみが含まれている必要があります。

Note

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

要件

   
サポートされている最小のクライアント Microsoft Windows 2000 以降のバージョンの Windows で使用できます。
対象プラットフォーム デスクトップ
Header setupapi.h (Setupapi.h を含む)
Library Setupapi.lib

関連項目

SP_DEVINFO_DATA

SetupDiDeleteDeviceInfo

SetupDiEnumDeviceInfo

SetupDiOpenDeviceInfo