/* * Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved */ /***************************************************** * MOF File for registering the DS PRovider ******************************************************/ ////////////////////////////////////////////////////////////////// // 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 { uint8 value[]; }; [ Description("This is the class used to model the AD Syntax DN_With_String") : Amended ] Class DN_With_String { string dnString; string value; }; [ Description("This is the class used to model the AD Syntax DN_With_Binary") : Amended ] Class DN_With_Binary { string dnString; uint8 value[]; }; [ singleton, dynamic, Description("This is the class used to model the LDAP RootDSE object") : Amended, provider("Microsoft|DSLDAPInstanceProvider|V1.0") ] Class RootDSE { string subschemaSubentry; string currentTime; string serverName; string namingContexts[]; string defaultNamingContext; string schemaNamingContext; string configurationNamingContext; string rootDomainNamingContext; string supportedControl[]; string supportedLDAPVersion[]; string dnsHostName; string dsServiceName; string highestCommittedUSN; string LDAPServiceName; string supportedCapabilities; string supportedLDAPPolicies[]; 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 { [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; }; /////////////////////////////////////////////////////////////////////// // 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 { [key, Description("The child DS Class") : Amended, classref{"DS_LDAP_Root_Class"}: ToInstance ToSubClass ] object ref ChildClass; [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; }; /////////////////////////////////////////////////////////////////////// // 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 { [KEY, Description("The child DS instance") : Amended] DS_LDAP_Root_Class ref ChildInstance; [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; }; /////////////////////////////////////////////////////////////////////// // 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 { [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 { [KEY, Description("The Name of the class for which scoping is to be used") : Amended, classref("DS_LDAP_Root_Class") : ToInstance ToSubClass ] string DSClass; [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; };