Aktiveringsobjekt
Ett aktiveringsobjekt är ett hjälpobjekt som används för att skapa ett annat objekt, ungefär som en klassfabrik. Aktiveringsobjekt exponerar IMFActivate--gränssnittet.
Med ett aktiveringsobjekt kan du skjuta upp skapandet av målobjektet eftersom du kan hålla fast vid en IMFAktivera pekare utan att skapa målobjektet. Aktiveringsobjekt kan också serialiseras och användas för att skapa målobjektet i en annan process. Till exempel används aktiveringsobjekt för att konvertera pipelinekomponenter från programprocessen till pmp-processen (protected media path). Aktiveringsobjekt används också av vissa uppräkningsfunktioner som returnerar en lista över IMFAktivera pekare. Innan programmet skapar målobjektet kan det hämta information om objektet genom att undersöka attribut för aktiveringsobjektet.
Om du vill skapa målobjektet från ett aktiveringsobjekt anropar du metoden IMFActivate::ActivateObject. Anroparen måste anropa IMFActivate::ShutdownObject när den är klar med det skapade objektet. Ofta skapar programmet aktiveringsobjektet och mediasessionen anropar ActivateObject. I så fall måste mediasessionen, inte programmet, anropa ShutdownObject. I andra situationer tar programmet emot en IMFActivate pekare från mediesessionen, och programmet anropar ActivateObject och ShutdownObject. (Se till exempel Spela upp skyddade mediefiler.)
Aktiveringsobjekt kan ha attribut, och gränssnittet IMFActivate ärver IMFAttributes-gränssnittet. Vissa aktiveringsobjekt använder attribut för att konfigurera det skapade objektet. De specifika attribut som stöds av varje objekt dokumenteras i referensen för aktiveringsobjektets skapandefunktion. Ange attributen med hjälp av IMFAktivera pekare som du får från funktionen.
För skyddad uppspelning konverteras aktiveringsobjekt till PMP-processen. För att stöda marshaling måste ett aktiveringsobjekt exponera IPersistStream--gränssnittet. Dessutom måste både aktiveringsobjektet och det skapade objektet vara betrodda komponenter om PMP körs i en skyddad process. Detta är inte ett krav när PMP:en läses in i en oskyddad process.
Om du vill använda ett anpassat pipelineobjekt (till exempel en mediemottagare) i PMP-processen måste du implementera ett aktiveringsobjekt för pipelineobjektet:
- Aktiveringsobjektet måste exponera IMFActivate och IPersistStream.
- Aktiveringsobjektets IPersist::GetClassID-metoden måste returnera aktiveringsobjektets CLSID.
- Du kan också implementera IPersistStream::Save and IPersistStream::Load methods to marshal any data that you need to configure your activation object.
När mediasessionen läser in topologin i PMP-processen anropas CoCreateInstance- för att skapa en ny instans av aktiveringsobjektet. Sedan anropas IMFActivate::ActivateObject för att skapa pipelineobjektet.
Relaterade ämnen