Skapa Registration-Free COM-objekt

Med aktiveringskontexter kan COM-objekt användas utan att de behöver registreras. På så sätt kan ditt program ha flera komponenter med olika funktioner baserat på deras version i stället för deras registerinformation. Flera komponenter kan exponera samma COM-objekt med samma GUID men har olika funktioner baserat på versionen.

När ett program begär ett GUID från CLSIDFromProgIDsöker COM först efter mappningen från progid till CLSID i den aktiva aktiveringskontexten. När ett program använder CoCreateInstance för att hämta en instansgränssnittspekare söker COM i den aktiva aktiveringskontexten för att hitta vilken DLL som ska vara värd för CLSID. Om aktiveringskontexten inte innehåller nödvändig information söker COM efter informationen i registret med hjälp av den vanliga metoden.

Observera att eftersom aktiveringskontexter är per tråd, överför COM aktiveringskontexten från den skapande tråden till värdtråden och aktiverar den innan anrop av LoadLibrary eller DllGetClassObject på värdtråden. Den här funktionen finns redan i Windows, klientkod krävs inte för att göra något för att implementera detta.

COM-klasser kan exporteras av värdbaserade komponenter utan att gå igenom registret. Flera komponenter kan exponera samma ProgID för olika COM-objekt, och värdprogrammet bör bara hitta rätt aktiveringskontext och sedan använda CLSIDFromProgID och CoCreateInstance för att hämta det värdbaserade objektets gränssnittspekare.