Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma classe de exibição de junção contém propriedades de instâncias de classe de origem que são conectadas por um valor de propriedade comum, como Class1.Prop1 = Class2.Prop2. Cada instância em uma classe de exibição de junção consiste em partes de instâncias de classe diferentes.
Você pode basear uma classe de exibição de junção na desigualdade de valores de propriedade, como Class1.Prop1<>Class2.Prop2 em que Prop1 e Prop2 não são mapeados para a mesma propriedade na classe view.
Uma classe de exibição de associação é útil quando as informações que você está procurando estão contidas em classes separadas, mas relacionadas. Por exemplo, se você quiser informações sobre uma impressora e sobre a configuração da impressora, você pode criar uma classe de exibição de junção que contém algumas das propriedades da classe Win32_Printer e algumas das propriedades da classe Win32_PrinterConfiguration. Sem o View Provider, você deve recuperar e mesclar as propriedades das instâncias separadas para obter as informações de que precisa.
O procedimento a seguir descreve como criar uma classe de vista de junção.
Para criar uma classe de exibição de associação
Comece uma definição de classe com o qualificador de cadeia de caracteres JoinOn.
Os qualificadores JoinOn, Associatione Union são mutuamente exclusivos entre si.
Se necessário, filtre as instâncias desejadas na classe join aplicando o qualificador PostJoinFilter.
O provedor de PostJoinFilter permite restringir as instâncias de uma classe de exibição a instâncias que atendem a condições específicas.
Crie as consultas que definem instâncias de origem da classe de visualização com o qualificador ViewSources.
Defina os nomes e locais dos namespaces onde estão localizadas as instâncias de origem com o qualificador ViewSpaces.
Defina as propriedades que pretendes numa classe de vista de junção com o qualificador PropertySources.
Quando as propriedades são adicionadas à vista de junção com base na igualdade, as duas propriedades de origem devem ser mapeadas num qualificador PropertySources.
O exemplo de código a seguir mostra duas propriedades que estão mapeadas em um qualificador PropertySources.
[PropertySources{"IDProcess", "IDProcess"}] Uint32 ProcessID;Usando o qualificadorHiddenDefault, você pode marcar as propriedades que pertencem a uma classe de origem.
O exemplo de código a seguir mostra uma classe de vista de junção criada a partir das classes de provedor do Monitor de Desempenho Win32_PerfRawData_PerfProc_Process e Win32_PerfRawData_PerfProc_Thread com propriedades de ambas as classes unidas pela propriedade ProcessID.
#pragma namespace("\\\\.\\root\\cimv2")
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"};
};
[JoinOn("Win32_PerfRawData_PerfProc_Process.IDProcess =
Win32_PerfRawData_PerfProc_Thread.IDProcess"),
ViewSources{"SELECT Name, IDProcess, PriorityBase
FROM Win32_PerfRawData_PerfProc_Process",
"SELECT Name, IDProcess, ThreadState,
PriorityCurrent FROM Win32_PerfRawData_PerfProc_Thread"},
ViewSpaces{"\\\\.\\root\\cimv2", "\\\\.\\root\\cimv2"},
dynamic: ToInstance, provider("MS_VIEW_INSTANCE_PROVIDER")]
class JoinedProcessThread
{
[PropertySources{"IDProcess", "IDProcess"}]
Uint32 ProcessID;
[PropertySources{"Name", ""}]
String PName;
[PropertySources{"", "Name"}, key]
String TName;
[PropertySources{"", "ThreadState"}]
Uint32 State;
[PropertySources{"PriorityBase", ""}]
Uint32 BasePriority;
[PropertySources{"", "PriorityCurrent"}]
Uint32 CurrentPriority;
};