Freigeben über


Versionsattribut

Das [version] -Schnittstellenattribut identifiziert eine bestimmte Version zwischen mehreren Versionen einer RPC-Schnittstelle. Mit dem Versionsattribut stellen Sie sicher, dass nur kompatible Versionen von Client- und Serversoftware gebunden werden dürfen.

version ( major-value[[. minor-value]] )

Parameter

Hauptwert

Gibt eine kurze ganze Zahl ohne Vorzeichen zwischen Null und 65.535 (einschließlich) an, die die Hauptversionsnummer darstellt.

Nebenwert

Gibt eine kurze ganze Zahl ohne Vorzeichen zwischen Null und 65.535 (einschließlich) an, die die Nebenversionsnummer darstellt. Der Nebenversionswert ist optional. Wenn vorhanden, wird der Nebenversionswert durch ein Punktzeichen (.) von der Hauptversionsnummer getrennt. Wenn nicht angegeben, ist der Nebenversionswert null.

Bemerkungen

Der MIDL-Compiler unterstützt nicht mehrere Versionen einer COM-Schnittstelle. Daher kann eine Schnittstellenattributliste, die das [object] -Attribut enthält, das Attribut [version] nicht enthalten. Verwenden Sie die Schnittstellenvererbung, um eine neue Version einer vorhandenen COM-Schnittstelle zu erstellen. Eine abgeleitete COM-Schnittstelle verfügt über eine andere UUID, erbt jedoch die Schnittstellenmemberfunktionen, Statuscodes und Schnittstellenattribute der Basisschnittstelle.

In Kombination mit dem [uuid] -Wert identifiziert der Wert [version] die Schnittstelle eindeutig. Die Laufzeitbibliothek übergibt die Werte [version] und [uuid] an den Server, wenn der Client eine Remotefunktion aufruft. Ein Client kann eine Bindung an einen Server für eine bestimmte Schnittstelle herstellen, wenn:

  • Der Wert [uuid] ist identisch.
  • Die Hauptversionsnummer ist identisch.
  • Die Nebenversionsnummer des Clients ist kleiner oder gleich der Nebenversionsnummer des Servers.

Dies ist Ihr Vorteil und der Vorteil Ihrer Benutzer, die Kompatibilität zwischen versionen beizubehalten, d. h., die Benutzeroberfläche so zu ändern, dass sich nur die Nebenversionsnummer ändert. Sie können die Aufwärtskompatibilität beibehalten, wenn Sie neue Datentypen hinzufügen, die nicht von vorhandenen Funktionen verwendet werden, und wenn Sie neue Funktionen hinzufügen, ohne die Schnittstellenspezifikation für vorhandene Funktionen zu ändern.

Ändern Sie die Hauptversionsnummer, wenn eine der folgenden Bedingungen zutrifft:

  • Wenn Sie einen Datentyp ändern, der von einer vorhandenen Funktion verwendet wird.
  • Wenn Sie die Schnittstellenspezifikation für eine vorhandene Funktion ändern (z. B. Hinzufügen oder Entfernen eines Parameters).
  • Wenn Sie Rückrufe hinzufügen, die von vorhandenen Funktionen aufgerufen werden.

Ändern Sie die Nebenversionsnummer, wenn alle folgenden Bedingungen gelten:

  • Wenn Sie Typdefinitionen oder Konstanten hinzufügen, die von vorhandenen Funktionen oder Rückrufen nicht verwendet werden.
  • Wenn Sie keine vorhandenen Funktionen ändern und der Schnittstelle neue Funktionen hinzufügen.
  • Wenn Sie Rückrufe hinzufügen, die nicht von vorhandenen Funktionen aufgerufen werden, und die neuen Rückrufe folgen vorhandenen Funktionen.

Wenn Ihre Änderungen als aufwärts kompatible Änderung der Schnittstelle gelten, verwenden Sie das folgende Verfahren.

So ändern Sie die IdL-Datei (Interface Interface)

  1. Fügen Sie der Schnittstellendatei neue Konstanten- und Typdefinitionen hinzu.
  2. Fügen Sie rückruffunktionen am Ende der Schnittstellendatei hinzu.
  3. Fügen Sie am Ende der Schnittstellendatei neue Funktionen hinzu.

Das [version] -Attribut kann höchstens einmal im Schnittstellenheader auftreten.

Wenn das Versionsattribut nicht vorhanden ist, weist die Schnittstelle eine Standardversion von 0.0 auf.

Das Punktzeichen zwischen den Haupt- und Nebenzahlen ist ein Trennzeichen und stellt keinen Dezimalkomma dar. Die Nebenzahl wird als ganze Zahl behandelt. Führende Nullen sind nicht signifikant. Nachfolgende Nullen sind signifikant.

Die Versionseinstellung 1.11 stellt beispielsweise einen Hauptwert von 1 und einen Nebenwert von elf dar. Version 1.11 stellt keinen Wert zwischen 1.1 und 1.2 dar.

Siehe auch

IdL-Datei (Interface Definition)

Schnittstelle

Objekt

Uuid