/* * Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved */ /***************************************************** * MOF File for registering the DS PRovider ******************************************************/ #pragma autorecover ////////////////////////////////////////////////////////////////// // Create the namespace in which the DS Provider provides classes ////////////////////////////////////////////////////////////////// #pragma namespace("\\\\.\\root") instance of __Namespace { Name = "directory" ; } ; ////////////////////////////////////////////////////////////////// // Create the namespace for the LDAP ADSI Provider ////////////////////////////////////////////////////////////////// #pragma namespace("\\\\.\\root\\directory") instance of __Namespace { Name = "LDAP" ; } ; #pragma namespace("\\\\.\\root\\directory\\LDAP") /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// ////// DS Class Provider //////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// [Description("This is the class used to model the AD Syntax Octet String") : Amended ] Class Uint8Array { [Read, Description("This is array of uint8 values that for the Octet String") : Amended] uint8 value[]; }; [Description("This is the class used to model the AD Syntax DN_With_String") : Amended ] Class DN_With_String { [Read, Description("This is the DN string component of the tuple") : Amended] string dnString; [Read, Description("This is the Value component of the tuple") : Amended] string value; }; [Description("This is the class used to model the AD Syntax DN_With_Binary") : Amended ] Class DN_With_Binary { [Read, Description("This is the DN string component of the tuple") : Amended] string dnString; [Read, Description("This is the Value component of the tuple") : Amended] uint8 value[]; }; [singleton, dynamic, Description("This is the class used to model the LDAP RootDSE object") : Amended, provider("Microsoft|DSLDAPInstanceProvider|V1.0") ] Class RootDSE { [Read, Description("Distinguished name for the subSchema object. The " "subschemaSubentry property and subschema are defined in LDAP 3.0 " "(see RFC 2251).") : Amended] string subschemaSubentry; [Read, Description("Current time set on this directory server") : Amended] string currentTime; [Read, Description("Distinguished name for the server object for " "this directory server in the configuration container") : Amended] string serverName; [Read, Description("DISTINGUISHED NAMEs for all naming contexts " "stored on this directory server. By default, a Windows 2000 domain " "controller contains at least three namespaces: Schema, Configuration, " "and one for the domain of which the server is a member") : Amended] string namingContexts[]; [Read, Description("The distinguished name for the domain of which " "this directory server is a member") : Amended] string defaultNamingContext; [Read, Description("Distinguished name for the schema container") : Amended] string schemaNamingContext; [Read, Description("Distinguished name for the configuration container") : Amended] string configurationNamingContext; [Read, Description("Distinguished name for the first domain in the forest " "that contains the domain of which this directory server is a member") : Amended] string rootDomainNamingContext; [Read, Description("OIDs for extension controls supported by this directory server") : Amended] string supportedControl[]; [Read, Description("LDAP versions (specified by major version number) " "supported by this directory server") : Amended] string supportedLDAPVersion[]; [Read, Description("DNS address for this directory server") : Amended] string dnsHostName; [Read, Description("The distinguished name of the NTDS settings object " "for this directory server") : Amended] string dsServiceName; [Read, Description("Highest USN used on this directory server. Used by " "directory replication") : Amended] string highestCommittedUSN; [Read, Description("Service Principal Name (SPN) for the LDAP server. " "Used for mutual authentication") : Amended] string LDAPServiceName; [Read, Description("The OBJECT IDENTIFIERs (OIDs) identifying the supported " "capabilities of the server") : Amended] string supportedCapabilities; [Read, Description("Supported LDAP management policies.") : Amended] string supportedLDAPPolicies[]; [Read, Description("Security mechanisms supported for SASL negotiation " "(see LDAP RFCs). By default, GSSAPI is supported") : Amended] string supportedSASLMechanisms[]; }; [Abstract, Description("This acts as the base class of all the classes provides by the DS Provider") : Amended ] class DS_LDAP_Root_Class { [Read, KEY, Description("This is the key for any DS Object") : Amended] string ADSIPath; }; /////////////////////////////////////////////////////////////////////// // Create an instance of the provider class for registration /////////////////////////////////////////////////////////////////////// instance of __Win32Provider as $ClassProvider { Name = "Microsoft|DSLDAPClassProvider|V1.0"; Clsid = "{1EF94880-01A8-11d2-A90B-00AA00BF3363}"; ImpersonationLevel = 1; PerUserInitialization = TRUE; HostingModel = "NetworkServiceHost"; }; /////////////////////////////////////////////////////////////////////// // Specification of the classes and operation provided by the provider /////////////////////////////////////////////////////////////////////// instance of __ClassProviderRegistration { Provider = $ClassProvider; SupportsGet = TRUE; SupportsPut = FALSE; SupportsDelete = FALSE; SupportsEnumeration = TRUE; ResultSetQueries = { "Select * From meta_class Where __this isa \"DS_LDAP_Root_Class\"" } ; // Provide all classes derived from the base class UnsupportedQueries = { "Select * From meta_class Where __Class = \"DS_LDAP_Root_Class\"" }; // Except the base class itself which is static }; /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// ////// DS Class Associations Provider //////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// [ Association : ToInstance, Description("This class models the possible superiors of a DS class") : Amended, dynamic, HasClassRefs, provider("Microsoft|DSLDAPClassAssociationsProvider|V1.0") ] class DS_LDAP_Class_Containment { [Read, key, Description("The child DS Class") : Amended, classref{"DS_LDAP_Root_Class"}: ToInstance ToSubClass ] object ref ChildClass; [Read, key, Description("The parent DS Class") : Amended, classref{"DS_LDAP_Root_Class"}: ToInstance ToSubClass] object ref ParentClass; }; /////////////////////////////////////////////////////////////////////// // Create an instance of the provider class for registration /////////////////////////////////////////////////////////////////////// instance of __Win32Provider as $AssociationsProvider { Name = "Microsoft|DSLDAPClassAssociationsProvider|V1.0"; Clsid = "{33831ED4-42B8-11d2-93AD-00805F853771}"; ImpersonationLevel = 1; HostingModel = "NetworkServiceHost"; }; /////////////////////////////////////////////////////////////////////// // Specification of the instances and operation provided by the provider /////////////////////////////////////////////////////////////////////// instance of __InstanceProviderRegistration { Provider = $AssociationsProvider; SupportsGet = TRUE; SupportsPut = FALSE; SupportsDelete = FALSE; SupportsEnumeration = TRUE; }; /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// ////// DS Instance Provider //////////////////////////////// /////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////// [Association : ToInstance, Description("This class models the parent-child container relationship of instances in the DS") : Amended, dynamic, provider("Microsoft|DSLDAPInstanceProvider|V1.0") ] class DS_LDAP_Instance_Containment { [Read, KEY, Description("The child DS instance") : Amended] DS_LDAP_Root_Class ref ChildInstance; [Read, KEY, Description("The child DS instance") : Amended] DS_LDAP_Root_Class ref ParentInstance; }; /////////////////////////////////////////////////////////////////////// // Create an instance of the provider class for registration /////////////////////////////////////////////////////////////////////// instance of __Win32Provider as $InstanceProvider { Name = "Microsoft|DSLDAPInstanceProvider|V1.0"; Clsid = "{AA527A40-4D9A-11d2-93AD-00805F853771}"; PerUserInitialization = TRUE; ImpersonationLevel = 1; HostingModel = "NetworkServiceHost"; }; /////////////////////////////////////////////////////////////////////// // Specification of the instances and operation provided by the provider /////////////////////////////////////////////////////////////////////// instance of __InstanceProviderRegistration { Provider = $InstanceProvider; SupportsGet = TRUE; SupportsPut = TRUE; SupportsDelete = TRUE; SupportsEnumeration = TRUE; QuerySupportLevels = { "WQL:UnarySelect" }; }; [Description("A class to encapsulate a DN") : Amended ] class DN_Class { [Read, KEY, Description("The ADSI Path to the object in the DS") : Amended ] string DN; }; [Association : ToInstance, Description(" Use an instance of this class to allow the client to give a " "hint to the DS Instance Provider to scope enumerations and queries to a " "particular sub-tree or a naming context. The client should create instances " "of this class if it wants the DS Provider to do enumerations and queries of " "a specific DS class from a specific DS Object as the root") : Amended ] class DSClass_To_DNInstance { [Read, KEY, Description("The Name of the class for which scoping is to " "be used") : Amended, classref("DS_LDAP_Root_Class") : ToInstance ToSubClass ] string DSClass; [Read, KEY, Description("The reference to an instance of DN_Class that gives " "the ADSI path of the object below which the search should be scoped") : Amended] DN_Class ref RootDNForSearchAndQuery; };