MOF 陣列
陣列是相同資料類型的數據值索引清單,您可以參考這些資料值。 除了字串和數值陣列之外,MOF 還支援內嵌物件和參考的陣列。
下列規則會定義 MOF 陣列:
屬性標識碼之後使用的括弧會指定類別定義中的陣列。
Class ArrayDataSample1 { string strArray1[]; };
所有陣列都必須是一維。
數位可以解除系結或具有明確的大小。
Class MyClass { sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]); sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]); };
WMI 會將限定和未系結的數位實作為 SAFEARRAY 結構,讓WMI在運行時間改變數位維度。 當您宣告具有明確大小的陣列時,WMI 會將大小儲存為限定符,並將大小視為建議的大小上限。 不過,WMI 可以視需要擴充大小。 變更明確大小不會影響實際數據。
數位是藉由在逗號分隔清單中指定適當類型的值來初始化。
Class ArrayDataSample2 { [key] string s; string strArray2[] = {"hello", "there"}; sint32 dwArray[] = {1,2,3}; };
參考陣列會宣告為物件路徑字串的陣列。
宣告物件路徑字串時,請勿在物件路徑的元素之間放置空格符。 下列範例說明如何宣告對象路徑參考。
Class ClassWithRefArray { [key] string s; object ref refArray[]; }; instance of ClassWithRefArray { s = 23; refArray = {"Disk.Name=\"C:\"", "Disk.Name=\"E:\""}; };
您可以使用數位做為方法的參數,但不能做為輸入或輸入輸出參數的傳回值。
陣列中的所有元素都會建立為相同類型的值。
如果陣列的專案屬於 物件 類型,則可以將任何類型的物件放在數位中。 另一方面,如果您宣告特定類型的物件,則 WMI 只允許數位中該類別或子類別的物件。 下列範例顯示陣列宣告,包括使用 物件 類型。
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;} }; };