Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett tillägg för att skapa objekt är ett COM-objekt som implementeras som en in-proc-server. Både tillägg för att skapa primära och sekundära objekt måste implementera #IDsAdminNewObjExt-gränssnittet.
Implementera IDsAdminNewObjExt
När guiden för skapande av objekt skapas initieras varje tillägg för skapande av objekt genom att anropa metodens tilläggs-ID IDsAdminNewObjExt::Initialize. Metoden Initialize tillhandahåller tillägget med information om containern som objektet skapas i, klassnamnet för det nya objektet och information om själva guiden. Om objektskaparguiden startas för att skapa ett nytt objekt från ett befintligt objekt kommer parametern pADsCopySource inte att vara NULL. I det här fallet bör tillägget försöka hämta så mycket data från objektet som kopieras som möjligt.
När tillägget har initierats anropas metoden IDsAdminNewObjExt::AddPages. Tillägget måste lägga till sidan eller sidorna i guiden under den här metoden. En guidesida skapas genom att fylla i en PROPSHEETPAGE- struktur och sedan skicka den här strukturen till funktionen CreatePropertySheetPage. Sidan läggs sedan till i guiden genom att anropa callback-funktionen som skickas till AddPages i parametern lpfnAddPage.
Innan tilläggssidan visas anropas IDsAdminNewObjExt::SetObject. Detta ger tillägget en IAD:er gränssnittspekare för objektet som skapas.
Medan guidens sida visas bör sidan hantera och svara på alla nödvändiga meddelanden i guiden, till exempel PSN_SETACTIVE och PSN_WIZNEXT.
När användaren har slutfört alla guidesidor visar guiden en "Slutför"-sida som innehåller en sammanfattning av de angivna data. Guiden hämtar denna data genom att anropa metoden IDsAdminNewObjExt::GetSummaryInfo för varje tillägg. Metoden GetSummaryInfo innehåller en BSTR- som innehåller textdata som visas på sidan "Slutför". Ett tillägg för att skapa objekt behöver inte ange sammanfattningsdata. I det här fallet bör GetSummaryInfo returnera E_NOTIMPL. GetSummaryInfo anropas bara en gång för varje tillägg, inte per sida, så om tillägget för att skapa objekt lägger till mer än en sida måste tillägget kombinera sammanfattningsdata i en sträng.
När användaren klickar på knappen Slutför på sidan "Slutför" anropar guiden varje av tilläggets IDs AdminNewObjExt::WriteData-metoder med DSA_NEWOBJ_CTX_PRECOMMIT kontext. När detta inträffar bör tillägget skriva insamlade data till lämpliga egenskaper med hjälp av metoden IADs::Put eller IADs::PutEx. Gränssnittet IADs tillhandahålls till tillägget genom metoden IDsAdminNewObjExt::SetObject. Tillägget bör inte bekräfta de cachelagrade egenskaperna genom att anropa IADs::SetInfo. När alla egenskaper har skrivits genomför tillägget för att skapa det primära objektet ändringarna genom att anropa IAD::SetInfo. Detta beskrivs mer detaljerat nedan.
Om ett fel inträffar meddelas tillägget om felet och under vilken åtgärd det inträffade när metoden IDsAdminNewObjExt::OnError anropas.
Implementera en guide för att skapa primärt objekt
Implementeringen av en guide för att skapa primära objekt är identisk med en sekundär guide för att skapa objekt, förutom att en guide för att skapa primära objekt måste utföra ytterligare några steg.
Innan den första sidan stängs måste guiden för att skapa objekt skapa det tillfälliga katalogobjektet. Gör detta genom att kalla på IDsAdminNewObjPrimarySite::CreateNew-metoden. En pekare till IDsAdminNewObjPrimarySite-gränssnittet hämtas genom att anropa QueryInterface med IID_IDsAdminNewObjPrimarySite på IDsAdminNewObj-gränssnittet som skickas till IDsAdminNewObjExt::Initialize. Metoden CreateNew skapar ett nytt temporärt objekt och anropar IDsAdminNewObjExt::SetObject för varje utökning.
När en guide för att skapa objekt innehåller mer än en sida implementerar systemet en "Slutför"-sida som visar en sammanfattning av objektinformationen som ska sparas. När knappen Slutför på sidan Slutför klickas kommer systemet att anropa var och en av objektskapandetilläggets IDsAdminNewObjExt::WriteData-metoden och sedan checka in det tillfälliga objektet i beständigt minne. Men om guiden för att skapa objekt bara innehåller en sida har sidan OK och Avbryt knappar i stället för knapparna Bakåt, Nästa och Avbryt knappar som normalt finns i en guide och ingen "Slutför"-sida tillhandahålls. Därför måste en tilläggsassistent för skapande av ensidesobjekt anropa IDsAdminNewObjPrimarySite::Commit för att utföra skriv- och sparaåtgärderna. Ett tillägg för att skapa ett primärt objekt med en sida bör anropa Commit som svar på PSN_WIZFINISH-meddelandet.
Eftersom andra tillägg för att skapa objekt kan lägga till sidor i guiden kanske tillägget för att skapa det primära objektet inte vet om det finns fler än en sida i guiden. Det här är inte ett problem av två skäl: För det första, om systemet implementerar "Slutför"-sidan, får tillägget för att skapa det primära objektet PSN_WIZNEXT i stället för PSN_WIZNEXT-meddelandet. För det andra kommer Commit att misslyckas utan problem om guiden innehåller mer än en sida.