Een exemplaarobjectpad beschrijven
Een exemplaarobjectpad beschrijft de locatie van een exemplaar van een bepaalde klasse binnen een specifieke naamruimte.
U kunt verschillende soorten exemplaarobjectpaden hebben:
Vol
Een volledig exemplaarobjectpad voegt de naam en waarde van de sleuteleigenschap voor de klasse toe aan een volledig klasseobjectpad.
In het volgende voorbeeld ziet u de definitie van het pad van het volledige exemplaarobject.
\\Server\Namespace:Class.KeyName="KeyValue"
Betrekkelijk
Een relatief objectpad verwijst naar een exemplaar in de huidige naamruimte op de huidige server. Het relatieve pad bestaat uit de klassenaam gevolgd door de namen en waarden van de belangrijkste eigenschappen van dit exemplaar.
In het volgende voorbeeld ziet u de definitie van het pad van het relatieve instantie-object.
MyClass.MyProp="e:"
Relatief met één sleutel
Voor klassen met slechts één eigenschap die als sleutel is aangewezen, kunt u de naam van de sleuteleigenschap weglaten.
In het volgende voorbeeld wordt de definitie van het relatieve exemplaarobjectpad met een enkele sleutel getoond.
MyClass="e:"
Relatief met meerdere sleutels
Gebruik een komma om onderscheid te maken tussen de sleutels van een exemplaar met meerdere sleutels.
In het volgende voorbeeld ziet u de definities van het relatieve instantieobjectpad met meerdere sleutelwaarden.
MyOtherClass.FirstKey=1,SecondKey=2
Relatief voor een singleton-klasse
Het relatieve objectpad voor een singleton-klasse bestaat uit de klassenaam gevolgd door de notatie =@.
In het volgende voorbeeld ziet u de definitie van het relatieve exemplaarobjectpad voor een singleton-klasse.
MySingletonClass=@
In de volgende procedure wordt beschreven hoe u een klasse-exemplaar ophaalt.
Een klasse-exemplaar ophalen
Initialiseer een tekenreeks die het objectpad bevat met een aanroep naar de functie SysAllocString.
Initialiseer een object dat de instantie zal ontvangen.
Haal het object op met een aanroep naar IWbemServices::GetObject of IWbemServices::GetObjectAsync.
Als u GetObjectAsyncwilt gebruiken, moet u de interfacevanIWbemSink implementeren.
De volgende #include instructie is vereist voor de code die verderop in dit onderwerp wordt vermeld om correct te compileren.
#include <wbemidl.h>
In het volgende codevoorbeeld wordt beschreven hoe u een klasse-exemplaar ophaalt met behulp van een objectpad.
IWbemServices* pWbemSvcs = 0;
BSTR Path = SysAllocString(L"ComPort=2");
IWbemClassObject *pComPort = 0;
pWbemSvcs->GetObject(Path, 0, 0, &pComPort, 0);
Voor exemplaren van klassen die meerdere eigenschappen als sleutel opgeven, vereist WMI geen specifieke volgorde van sleuteleigenschappen in objectpaden. U hoeft alleen de waarde op te geven van elk van de eigenschappen in het objectpad.
In het volgende codevoorbeeld worden twee equivalente sleutelbeschrijvingen beschreven.
MyClass.IntVal=33,StrVal="AAA"
MyClass.StrVal="AAA",IntVal=33