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 |