COM 개체에 대한 Reference-Counting 규칙

오디오 인터페이스의 메서드는 입력 매개 변수로 사용하거나 출력 매개 변수로 반환하는 COM 개체에 대한 참조를 계산하기 위한 일반적인 규칙 집합을 따릅니다. 이러한 규칙 및 해당 예외는 아래에 요약되어 있습니다. COM 인터페이스에 대한 자세한 내용은 Microsoft Windows SDK 설명서의 COM 섹션을 참조하세요.

입력 매개 변수에 대한 참조 계산

개체 X 에 대한 참조를 입력 매개 변수로 사용하는 메서드를 호출할 때 호출자는 호출 기간 동안 개체에 대한 자체 참조를 보유해야 합니다. 이 동작은 개체 X 에 대한 메서드의 포인터가 반환될 때까지 유효한 상태로 유지되도록 하는 데 필요합니다. 이 메서드를 구현하는 개체 Y가 이 메서드의 반환을 넘어 개체 X에 대한 참조를 보유해야 하는 경우 메서드는 반환하기 전에 개체 X에서 AddRef를 호출해야 합니다. 개체 Y가 나중에 개체 X 사용을 마치면 개체 X에서 Release를 호출해야 합니다.

예를 들어 IServiceGroup::AddMember 메서드는 해당 서비스 그룹에 추가하는 IServiceSink 개체에서 AddRef를 호출합니다. 이 동작을 보완하기 위해 IServiceGroup::RemoveMember 메서드는 서비스 그룹에서 제거하는 IServiceSink 개체에서 Release 를 호출합니다.

출력 매개 변수에 대한 참조 계산

출력 매개 변수를 통해 호출자에게 개체 참조를 전달하는 메서드는 개체가 반환되기 전에 또는 개체에 대한 자체 참조를 해제하기 전에 개체에서 AddRef 를 호출해야 합니다. 이 동작은 호출자가 호출에서 반환될 때 유효한 참조를 보유하도록 하는 데 필요합니다. 호출자는 개체 사용을 마쳤을 때 개체에서 Release 를 호출합니다.

예를 들어 IMiniportWaveCyclic::NewStream 메서드는 호출자(WaveCyclic 포트 드라이버)에 출력하는 스트림, 서비스 그룹 및 DMA 채널 개체에서 AddRef 를 호출합니다. 호출자는 더 이상 필요하지 않은 경우 이러한 참조를 해제할 책임이 있습니다. 이 동작을 보여 주는 IMiniportWaveCyclic::NewStream 메서드의 구현은 이전 버전의 Microsoft WDK(Windows 드라이버 키트)의 Sb16 샘플 어댑터를 참조하세요.

규칙에 대한 예외

이 메서드가 DmaChannel 출력 매개 변수에서 수행하는 파격적인 참조 계산에 대한 설명은 IMiniportWavePci::NewStream을 참조하세요.