Freigeben über


Reference-Counting Konventionen für COM-Objekte

Die Methoden in den Audioschnittstellen folgen einem allgemeinen Satz von Regeln zum Zählen von Verweisen auf die COM-Objekte, die sie als Eingabeparameter oder als Ausgabeparameter zurückgeben. Diese Regeln und ihre Ausnahmen sind unten zusammengefasst. Weitere Informationen zu COM-Schnittstellen finden Sie im Abschnitt COM der Microsoft Windows SDK-Dokumentation.

Referenzzählung bei Eingabeparametern

Beim Aufrufen einer Methode, die einen Verweis auf ein Objekt X als Eingabeparameter akzeptiert, muss der Aufrufer für die Dauer des Aufrufs einen eigenen Verweis auf das Objekt enthalten. Dieses Verhalten ist erforderlich, um sicherzustellen, dass der Zeiger der Methode auf Objekt X gültig bleibt, bis es zurückgegeben wird. Wenn das Objekt Y , das diese Methode implementiert, einen Verweis auf Objekt X über die Rückgabe dieser Methode hinaus enthalten muss, sollte die Methode AddRef für Objekt X aufrufen, bevor sie zurückgibt. Wenn Objekt Y später die Verwendung von Objekt X beendet, sollte Es Release für Objekt X aufrufen.

Beispielsweise ruft die IServiceGroup::AddMember-MethodeAddRef für das IServiceSink-Objekt auf, das sie ihrer Dienstgruppe hinzufügt. Um dieses Verhalten zu ergänzen, ruft die IServiceGroup::RemoveMember-MethodeRelease für das IServiceSink-Objekt auf, das sie aus der Dienstgruppe entfernt.

Referenzzählung für Ausgabeparameter

Eine Methode, die einen Objektverweis an den Aufrufer über einen Ausgabeparameter übergibt, sollte AddRef für das Objekt aufrufen, bevor es zurückgibt (oder bevor es einen eigenen Verweis auf das Objekt freigibt). Dieses Verhalten ist erforderlich, um sicherzustellen, dass der Aufrufer einen gültigen Verweis enthält, wenn er vom Aufruf zurückgegeben wird. Der Aufrufer ist für das Aufrufen von Release für das Objekt verantwortlich, wenn er die Verwendung abgeschlossen hat.

Beispielsweise ruft die IMiniportWaveCyclic::NewStream-MethodeAddRef für die Stream-, Dienstgruppen- und DMA-Kanalobjekte auf, die sie an den Aufrufer (den WaveCyclic-Porttreiber) ausgibt. Der Aufrufer ist dafür verantwortlich, diese Verweise freizugeben, wenn er sie nicht mehr benötigt. Eine Implementierung der IMiniportWaveCyclic::NewStream-Methode , die dieses Verhalten zeigt, finden Sie im Sb16-Beispieladapter in früheren Versionen des Microsoft Windows Driver Kit (WDK).

Ausnahmen von den Regeln

Eine Beschreibung der unkonventionellen Referenzzählung, die diese Methode für den DmaChannel-Ausgabeparameter ausführt, finden Sie unter IMiniportWavePci::NewStream.