//***************************************************************************
//
//  PROV.MOF
//
//  Standard MOF for provider registration objects.
//
//***************************************************************************

[abstract]

class __Provider : __SystemClass
{
	[key] string Name;
};

class __Win32Provider : __Provider
{
    string  CLSID;
    string  ClientLoadableCLSID;

    boolean PerUserInitialization = FALSE;
    
    boolean InitializeAsAdminFirst = FALSE;

    [values("ProtectedCLSID", "ProtectedNamespace", "ProtectedComInstance")]
    uint32  InitializationReentrancy = 0;
        // CLSID is never to be reenterd during initialization.
        // Any particular instance of the CLSID is not reentered during initialization,
        // but new instances may be initialized before others have completed.
        // The provider may be fully reentered during initialization for other
        // initializations.


    sint32  ImpersonationLevel = 0;     // 0=none, values to be defined in v1.1

    string  DefaultMachineName;
    boolean Pure = TRUE;	
        // If TRUE, Provider never becomes a standalone client and is expected
        // to release all connections to CIMOM when its own Release() is called.
    datetime UnloadTimeout;
};



[abstract]

class __ProviderRegistration : __SystemClass
{
    __Provider ref Provider;
};

[abstract]

class __Win32ObjectProviderRegistration : __ProviderRegistration
{
    [values("Pull", "Push", "PushVerify")] sint32 InteractionType = 0;

    boolean SupportsPut;
    boolean SupportsGet;
    boolean SupportsDelete;
    boolean SupportsEnumeration;

    string QuerySupportLevels[];
};

class __Win32ClassProviderRegistration : __Win32ObjectProviderRegistration
{
    [key] __Provider ref Provider; // redeclaration to make a key
    string ResultSetQueries[];
    string ReferencedSetQueries[];
    string UnsupporedQueries[];
};
 

class __Win32InstanceProviderRegistration : __Win32ObjectProviderRegistration
{
    [key] __Provider ref Provider; // redeclaration to make a key
};


class __Win32MethodProviderRegistration : __ProviderRegistration
{
    [key] __Provider ref Provider; // redeclaration to make a key
};


class __Win32PropertyProviderRegistration : __ProviderRegistration
{
    [key] __Provider ref Provider; // redeclaration to make a key
    boolean SupportsPut;
    boolean SupportsGet;
};

class __Win32EventConsumerProviderRegistration : __ProviderRegistration
{
    [key] __Provider ref Provider; // redeclaration to make a key
    string ConsumerClassNames[];
};

class __Win32EventProviderRegistration : __ProviderRegistration
{
    [key] __Provider ref Provider; // redeclaration to make a key
    string EventQueryList[];
};

