MOF-matrices
Een matrix is een geïndexeerde lijst met gegevenswaarden die van hetzelfde gegevenstype zijn, waarnaar u kunt verwijzen. Naast tekenreeks- en numerieke matrices ondersteunt MOF matrices van ingesloten objecten en verwijzingen.
De volgende regels definiëren een MOF-matrix:
Vierkante haken die na de eigenschaps-id worden gebruikt, geven een matrix op in een klassedefinitie.
Class ArrayDataSample1 { string strArray1[]; };
Alle matrices moeten eendimensionaal zijn.
Matrices kunnen niet-afhankelijk zijn of een expliciete grootte hebben.
Class MyClass { sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]); sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]); };
WMI implementeert gebonden en niet-gebonden matrices als SAFEARRAY- structuren, waardoor WMI matrixdimensies tijdens runtime kan variëren. Wanneer u een matrix met een expliciete grootte declareert, slaat WMI de grootte op als kwalificatie en behandelt de grootte als de voorgestelde maximale grootte. WMI kan de grootte echter indien nodig uitbreiden. Het wijzigen van de expliciete grootte heeft geen invloed op de werkelijke gegevens.
Matrices worden geïnitialiseerd door waarden op te geven van het juiste type in een door komma's gescheiden lijst.
Class ArrayDataSample2 { [key] string s; string strArray2[] = {"hello", "there"}; sint32 dwArray[] = {1,2,3}; };
Een matrix met verwijzingen wordt gedeclareerd als een matrix van objectpadtekenreeksen.
Wanneer u een tekenreeks voor het objectpad declareert, plaatst u geen witruimte tussen de elementen van het objectpad. In het volgende voorbeeld wordt beschreven hoe u een verwijzing naar een objectpad declareert.
Class ClassWithRefArray { [key] string s; object ref refArray[]; }; instance of ClassWithRefArray { s = 23; refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""}; };
U kunt een matrix gebruiken als parameter voor een methode, maar niet als retourwaarde voor een invoer- of invoeruitvoerparameter.
Alle elementen in een matrix worden gemaakt als waarden van hetzelfde type.
Als de elementen van een matrix van het object type zijn, kunt u elk type object in de matrix plaatsen. Als u daarentegen een specifiek type object declareert, staat WMI alleen objecten van die klasse of subklasse in de matrix toe. In de volgende voorbeelden ziet u matrixdeclaraties die het object type gebruiken.
Class EmbedClass { [key] sint32 PropOfClass; }; Class ArrayDataClass { [key] string s; string strArray1[]; string strArray2[] = {"hello", "there"}; sint32 dwArray[] = {1,2,3}; EmbedClass objArray[]; }; instance of ArrayDataClass { s = "keyStuff"; strArray1 = { "1.2.3.4", "1.2.3.5", "1.2.3.7"}; strArray2 = { "SELECT * FROM RegistryKeyChangeEvent", "SELECT * FROM RegistryValueChangeEvent", "SELECT * FROM RegistryTreeChangeEvent" }; dwArray = { 1,2,3,5,6 }; objArray = { instance of EmbedClass{PropOfClass=3;}, instance of EmbedClass{PropOfClass=4;} }; };