Partager via


conventions Reference-Counting pour les objets COM

Les méthodes dans les interfaces audio suivent un ensemble général de règles pour compter les références sur les objets COM qu’elles prennent comme paramètres d’entrée ou retournent en tant que paramètres de sortie. Ces règles et leurs exceptions sont résumées ci-dessous. Pour plus d’informations sur les interfaces COM, consultez la section COM de la documentation Microsoft Windows SDK.

Comptage de référence sur les paramètres d’entrée

Lors de l’appel d’une méthode qui prend une référence à un objet X comme paramètre d’entrée, l’appelant doit conserver sa propre référence sur l’objet pendant la durée de l’appel. Ce comportement est nécessaire pour garantir que le pointeur de la méthode vers l’objet X reste valide jusqu’à ce qu’il soit retourné. Si l’objet Y qui implémente cette méthode doit contenir une référence à l’objet X au-delà du retour de cette méthode, la méthode doit appeler AddRef sur l’objet X avant de retourner. Lorsque l’objet Y termine ultérieurement l’utilisation de l’objet X, il doit appeler Release sur l’objet X.

Par exemple, la méthode IServiceGroup::AddMember appelle AddRef sur l’objet IServiceSink qu’elle ajoute à son groupe de services. Pour compléter ce comportement, la méthode IServiceGroup::RemoveMember appelle Release sur l’objet IServiceSink qu’elle supprime du groupe de services.

Comptage de référence sur les paramètres de sortie

Une méthode qui transmet une référence d’objet à l’appelant via un paramètre de sortie doit appeler AddRef sur l’objet avant qu’il ne retourne (ou avant qu’il libère sa propre référence à l’objet). Ce comportement est nécessaire pour s’assurer que l’appelant détient une référence valide au retour de l’appel. L’appelant est chargé d’appeler Release sur l’objet lorsqu’il a terminé de l’utiliser.

Par exemple, la méthode IMiniportWaveCyclique::NewStream appelle AddRef sur le flux, le groupe de services et les objets de canal DMA qu’elle génère à l’appelant (pilote de port WaveCyclique). L’appelant est chargé de libérer ces références lorsqu’il n’en a plus besoin. Pour une implémentation de la méthode IMiniportWaveCyclique::NewStream qui montre ce comportement, consultez l’exemple d’adaptateur Sb16 dans les versions antérieures du Kit de pilotes Microsoft Windows (WDK).

Exceptions aux règles

Pour obtenir une description du comptage de référence non conventionnel effectué par cette méthode sur son paramètre de sortie DmaChannel , consultez IMiniportWavePci::NewStream.