Kernimplementierung
Ein ADSI-Anbieter unterstützt die folgenden Features:
- ADsPath-Zeichenfolgen im COM- und URL-Format. Definitionsgemäß können Sie ein Active Directory-Objekt mithilfe eines ADsPath abrufen. Anbieter unterstützen die Syntax, die ihr Verzeichnisdienst erfordert, indem sie die ParseDisplayName-Implementierung verwenden.
- Ein Namespace-Objekt der obersten Ebene, das IParseDisplayName::P arseDisplayName und IADsOpenDSObject unterstützt. Dieses Objekt enthält die Stammknoten für diesen Namespace. Ein Teil der ParseDisplayName-Implementierung muss einen Parser enthalten, der auf Syntaxfehler für seinen eigenen Namespace überprüft. Dieses Objekt muss auch IADs und IADsOpenDSObject unterstützen.
- Die IADs-Schnittstelle. Dies schließt eine einfache Implementierung des Eigenschaftencaches über IADs::GetInfo und IADs::SetInfo ein. Vorgänge, die Objekteigenschaften erhalten oder festlegen, erfolgen im zwischengespeicherten Modus. Cachewerte werden während IADs::SetInfo in den zugrunde liegenden Verzeichnisspeicher geschrieben. Eine ADSI-Methode wird jedoch nicht zwischengespeichert, sondern sofort ausgeführt.
- Die Schnittstellen IADsPropertyList, IADsPropertyEntry und IADsPropertyValue für den direkten Zugriff auf und das Aufzählen der Eigenschaften im Eigenschaftencache. Bei Verzeichnisdiensten, die kein Schema verfügbar machen, können Sie mit dieser Schnittstelle die Eigenschaften eines Objekts bearbeiten.
- Die IDirectoryObject-Schnittstelle für Nichtautomatisierungsclients. Dabei wird das Over-the-Wire-Protokoll verwendet, um maximale Leistung zu erzielen, und der Eigenschaftencache wird umgangen.
- Die IADsContainer-Schnittstelle. Jedes Active Directory-Objekt verfügt über einen übergeordneten Container, der seine Lebensdauer steuert. Beachten Sie, dass sich IADs::GetInfo für ADs-Containerobjekte nur auf die Containereigenschaften und nicht auf deren Inhalt auswirken. SetInfo für ADs-Containerobjekte wirkt sich nur auf die Containereigenschaften aus und wirkt sich nicht auf neu erstellte Objekte oder Objekte aus, die bereits im Container vorhanden sind.
- Die IDispatch-Schnittstelle. Dies ist die Automatisierungsschnittstelle für Sprachen wie Visual Basic Scripting Edition, die keine Kompilierzeitbindung verwenden. Im Zusammenhang damit stehen die Typbibliotheksdaten, die ein Anbieter zur Verfügung stehen muss. Weitere Informationen finden Sie unter Implementierungsprobleme für ADSI-Anbieter.
- Ein Schemaklassencontainerobjekt und die entsprechenden Syntax-, Eigenschafts- und Schemaklassenobjekte, die IADsSyntax, IADsPropertybzw. IADsClass unterstützen. Jeder Stammknoten muss mindestens ein eigenes Schemaklassencontainerobjekt enthalten.
- Die IADsMembers-Schnittstelle, wenn unterstützte Attribute Sammlungen von ADSI-Objekten sind, z. B. Sicherheitsgruppen.
- Die IADsCollection-Schnittstelle, wenn unterstützte Attribute Sammlungen desselben Verzeichniselementtyps mit der Funktion IADsCollection::Add und IADsCollection::Remove sind.
- Die IEnumXXXX-Enumeration unterstützt alle spezifischen Enumeratorobjekte.
- Routinen zum Zuordnen von Syntax und Konvertieren nativer Daten in den VARIANT-Datentyp.
- Befolgen Sie die ADSI-Konventionen für vom Anbieter bereitgestellte ADSI-Objekte. Schließen Sie Hilfedateien und Typbibliotheken ein, die die Schnittstelleneigenschaften und -methoden dokumentieren.
Wie bei jeder COM-Implementierung müssen Aufrufe von QueryInterface E _ NOINTERFACE für nicht implementierte Schnittstellen zurückgeben, E _ NOTIMPL für nicht implementierte Methoden von Schnittstellen, die andernfalls implementiert werden, und E ADS PROPERTY NOT _ _ _ _ SUPPORTED für nicht implementierte Eigenschaften zurückgeben. Weitere Informationen zu dualen Schnittstellen und deren Auswirkungen auf die Implementierung von Eigenschaften finden Sie unter Duale Schnittstellen.