Instance ID

Eine instance-ID ist eine Zeichenfolge, die vom Enumerator eines Geräts (dessen Bustreiber) gemeldet wird und ein Gerät von anderen Geräten desselben Typs auf einem Computer unterscheidet. Eine instance-ID enthält Seriennummerninformationen, sofern vom zugrunde liegenden Bus unterstützt, oder eine Art von Standortinformationen. Die Zeichenfolge darf keine "\"-Zeichen oder andere Zeichen enthalten, die in einer Antwort auf eine IRP_MN_QUERY_ID-Anforderung nicht zulässig sind. Andernfalls ist das generische Format der Zeichenfolge busspezifisch. Die Anzahl der Zeichen einer instance-ID, mit Ausnahme eines NULL-Abschlussators, muss kleiner als MAX_DEVICE_ID_LENsein. Darüber hinaus ist die instance-ID eine weitere Eingabe bei der Erstellung der Geräte-instance-ID, zusammen mit einer Geräte-ID, und die maximal mögliche Länge eines Geräts instance-ID ist MAX_DEVICE_ID_LEN. Dies erfordert, dass die Länge der instance-ID ausreichend kleiner ist, als MAX_DEVICE_ID_LEN dass die Geräte-instance-ID als Zeichenfolge mit einer Länge kleiner als MAX_DEVICE_ID_LENerstellt werden kann.

Das UniqueID-Element der DEVICE_CAPABILITIES-Struktur für ein Gerät gibt an, ob eine vom Bus bereitgestellte instance-ID systemweit eindeutig ist:

  • Wenn UniqueIDFALSE ist, ist die vom Bus bereitgestellte instance-ID für ein Gerät nur für den Bus des Geräts eindeutig. Der Plug & Play-Manager (PnP) ändert die vom Bus bereitgestellte instance-ID und kombiniert sie mit der entsprechenden Geräte-ID, um eine im System eindeutige Geräte-instance-ID zu erstellen.

  • Wenn UniqueIDTRUE ist, identifiziert das Gerät instance ID, die aus der vom Bus bereitgestellten Geräte-ID und instance ID gebildet wird, ein Gerät im System eindeutig.

Eine instance-ID ist bei Systemneustarts dauerhaft.

Der PnP-Manager fragt diese Zeichenfolge vom Bustreiber des Geräts mithilfe einer IRP_MN_QUERY_ID Anforderung ab, wobei das Feld Parameters.QueryId.IdType auf BusQueryInstanceID festgelegt ist.