MOF-matriser
En matris är en indexerad lista med datavärden som är av samma datatyp, som du kan referera till. Förutom sträng- och numeriska matriser stöder MOF matriser med inbäddade objekt och referenser.
Följande regler definierar en MOF-matris:
Hakparenteser som används efter egenskapsidentifieraren anger en matris i en klassdefinition.
Class ArrayDataSample1 { string strArray1[]; };
Alla matriser måste vara endimensionella.
Matriser kan vara obundna eller ha en explicit storlek.
Class MyClass { sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]); sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]); };
WMI implementerar avgränsade och obundna matriser som SAFEARRAY- strukturer, vilket gör att WMI kan variera matrisdimensioner vid körning. När du deklarerar en matris med en explicit storlek lagrar WMI storleken som en kvalificerare och behandlar storleken som den föreslagna maximala storleken. WMI kan dock utöka storleken om det behövs. Att ändra den explicita storleken påverkar inte faktiska data.
Matriser initieras genom att ange värden av lämplig typ i en kommaavgränsad lista.
Class ArrayDataSample2 { [key] string s; string strArray2[] = {"hello", "there"}; sint32 dwArray[] = {1,2,3}; };
En matris med referenser deklareras som en matris med objektsökvägssträngar.
När du deklarerar en objektsökvägssträng ska du inte placera blanksteg mellan elementen i objektsökvägen. I följande exempel beskrivs hur du deklarerar en objektsökvägsreferens.
Class ClassWithRefArray { [key] string s; object ref refArray[]; }; instance of ClassWithRefArray { s = 23; refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""}; };
Du kan använda en matris som en parameter för en metod, men inte som ett returvärde för en indata- eller indataparameter.
Alla element i en matris skapas som värden av samma typ.
Om elementen i en matris är av objekt typ kan du placera alla typer av objekt i matrisen. Om du däremot deklarerar en viss typ av objekt tillåter WMI endast objekt av den klassen eller underklassen i matrisen. I följande exempel visas matrisdeklarationer som innehåller -objektet typ.
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;} }; };