2025-04-27 07:49:33 -04:00

245 lines
6.8 KiB
Plaintext

///////////////////////////////////////////////////////////////////////
//
// VP_SAMPLE1.MOF
//
// Purpose: Sample view provider MOF for union views
//
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
//
///////////////////////////////////////////////////////////////////////
#pragma namespace("\\\\.\\root")
instance of __namespace
{
Name = "sample_views";
};
#pragma namespace("\\\\.\\root\\sample_views")
//*********************************************************************************************************
//
// The following three instances register the view provider in the current namespace
//
//*********************************************************************************************************
instance of __Win32Provider as $DataProv
{
Name = "MS_VIEW_INSTANCE_PROVIDER";
ClsId = "{AA70DDF4-E11C-11D1-ABB0-00C04FD9159E}";
ImpersonationLevel = 1;
PerUserInitialization = "True";
};
instance of __InstanceProviderRegistration
{
Provider = $DataProv;
SupportsPut = True;
SupportsGet = True;
SupportsDelete = True;
SupportsEnumeration = True;
QuerySupportLevels = {"WQL:UnarySelect"};
};
instance of __MethodProviderRegistration
{
Provider = $DataProv;
};
//*********************************************************************************************************
//
// The following classes demonstrate unions of classes defined in multiple namespaces
//
// In these cases, a source system property is added as a key to maintain uniqueness.
//
//*********************************************************************************************************
// UNION CASE1
// In this case, the namespaces are on different machines (supported on Win2000 only).
//======================================================================================
[union,
ViewSources {"Select * from Win32_OperatingSystem"},
ViewSpaces {"\\\\.\\root\\cimv2::\\\\MACHINE1\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Union_OS
{
[key, PropertySources{"Name"}]
string Name;
[key, PropertySources{"__Server"}]
string Server;
[PropertySources{"Version"}]
string Version;
[PropertySources{"BuildNumber"}]
string BuildNumber;
};
// UNION CASE2
// In this case, the namespaces are on the same machine (supported on all platforms).
//=====================================================================================
[union,
ViewSources {"Select * from __Win32Provider"},
ViewSpaces {"\\\\.\\root\\cimv2::\\\\.\\root\\wmi::\\\\.\\root\\snmp\\localhost::\\\\.\\root\\directory\\ldap"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Union_ProvidersOnThisMachine
{
[key, PropertySources{"Name"}]
string Name;
[key, PropertySources{"__Namespace"}]
string Location;
[PropertySources{"CLSID"}]
string ClassIdentifier;
[PropertySources{"PerUserInitialization"}]
boolean PerUserInitialization;
};
//*********************************************************************************************************
//
// The following classes demonstrate unions of similar classes. The source classes must
// have the same key structure.
//
//*********************************************************************************************************
// UNION CASE3
// In this case, the namespaces are on the same machine (supported on all platforms).
// This class lists several types of drives supported by the Win32 Provider.
//=====================================================================================
[
union,
ViewSources {
"Select * from Win32_DiskDrive",
"Select * from Win32_CDRomDrive",
"Select * from Win32_FloppyDrive"
},
ViewSpaces {
"\\\\.\\root\\cimv2",
"\\\\.\\root\\cimv2",
"\\\\.\\root\\cimv2"
},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Union_PhysicalDrives
{
[key, PropertySources{"DeviceId", "DeviceId", "DeviceId"}]
string DeviceIdentifier;
[PropertySources{"MediaType", "MediaType", "Caption"}]
string Type;
[PropertySources{"Partitions", "", ""}]
uint32 NumberOfPartitions;
[PropertySources{"", "MediaLoaded", ""}]
boolean DiscLoaded;
[PropertySources{"Caption", "Name", "Name"}]
string Name;
};
// UNION CASE4
// In this case, remote namespaces are used too (supported on Win2000).
// This class lists several types of drives supported by the Win32 Provider on the
// local machine and a machine named Machine1
//=====================================================================================
[
union,
ViewSources {
"Select * from Win32_DiskDrive",
"Select * from Win32_CDRomDrive",
"Select * from Win32_FloppyDrive"
},
ViewSpaces {
"\\\\.\\root\\cimv2::\\\\Machine1\\root\\cimv2",
"\\\\.\\root\\cimv2::\\\\Machine1\\root\\cimv2",
"\\\\.\\root\\cimv2::\\\\Machine1\\root\\cimv2"
},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Union_PhysicalDrivesOnMyMachines
{
[key, PropertySources{"DeviceId", "DeviceId", "DeviceId"}]
string DeviceIdentifier;
[PropertySources{"MediaType", "MediaType", "Caption"}]
string Type;
[PropertySources{"Partitions", "", ""}]
uint32 NumberOfPartitions;
[PropertySources{"", "MediaLoaded", ""}]
boolean DiscLoaded;
[PropertySources{"Caption", "Name", "Name"}]
string Name;
};
// UNION CASE 5
// Methods are only supported on Union views.
// Furthermore, the signature of the method has to match that
// of the source exactly. The easiest way of ensuring this is
// to copy the method signature (from the MOF or by extracting
// it from the database using wbemtest) and pasting it into the
// view class.
[
Union,
ViewSources {"Select * From Win32_OperatingSystem"},
ViewSpaces {"\\\\.\\root\\cimv2"},
dynamic, provider("MS_VIEW_INSTANCE_PROVIDER")
]
class Union_OSWithMethods
{
[key, PropertySources{"Name"}]
string Name;
[key, PropertySources{"__Server"}]
string Server;
[PropertySources{"Version"}]
string Version;
[PropertySources{"BuildNumber"}]
string BuildNumber;
//Methods
[implemented,
MethodSource{"Reboot"}
]
uint32 Reboot();
[implemented, Privileges{"SeShutdownPrivilege"},
MethodSource{"Shutdown"}
]
uint32 Shutdown();
[implemented: ToSubClass, Privileges{"SeShutdownPrivilege"}: ToSubClass, MappingStrings{"Win32API|System Shutdown Functions|ExitWindowsEx"}: ToSubClass,
MethodSource{"Win32Shutdown"}
]
uint32 Win32Shutdown([in, MappingStrings{"Win32API|System Shutdown Functions|ExitWindowsEx"}: ToSubClass, BitMap{"0x00000000", "0x00000001", "0x00000002", "0x00000004", "0x00000008"}: ToSubClass] sint32 Flags, [in, MappingStrings{"Win32API|System Shutdown Functions|ExitWindowsEx"}: ToSubClass] sint32 Reserved = 0);
};