インスタンス ID は、デバイスの列挙子 (バス ドライバー) によって報告される文字列であり、コンピューター上の同じ種類の他のデバイスとデバイスを区別します。
インスタンス ID には、基になるバスでサポートされている場合はシリアル番号情報、または何らかの場所の情報が含まれます。 文字列には、"\" 文字や、 IRP_MN_QUERY_ID 要求への応答で許可されていないその他の文字を含めることはできません。それ以外の場合、文字列のジェネリック形式はバス固有です。
インスタンス ID の文字数 (NULL ターミネータを除く) は、MAX_DEVICE_ID_LEN
未満にする必要があります。 さらに、 インスタンス ID は、デバイス インスタンス ID と共に デバイス インスタンス ID の作成に対するもう 1 つの入力 であり、デバイス インスタンス ID の最大長は MAX_DEVICE_ID_LEN
。 これには、 インスタンス ID の長さが MAX_DEVICE_ID_LEN
よりも十分に短く、デバイス インスタンス ID を長さが MAX_DEVICE_ID_LEN
未満の文字列として作成できる必要があります。
デバイスのDEVICE_CAPABILITIES構造体の UniqueID メンバーは、次のように、バス指定のインスタンス ID がシステム全体で一意かどうかを示します。
UniqueID が FALSE の場合、バスから指定されるデバイスのインスタンス IDは、そのデバイスのバスに対してのみ一意です。 プラグ アンド プレイ (PnP) マネージャーは、バスが提供する インスタンス ID を変更し、対応するデバイス ID と組み合わせて、システム内で一意のデバイス インスタンス ID を作成します。
UniqueID が TRUE の場合、バス指定のデバイス ID とインスタンス ID から形成されたデバイス インスタンス ID は、システム内のデバイスを一意に識別します。
インスタンス ID は、システムの再起動後も永続的です。
PnP マネージャーは、Parameters.QueryId.IdType フィールドが BusQueryInstanceID に設定されたIRP_MN_QUERY_ID要求を使用して、デバイスのバス ドライバーからこの文字列を照会します。