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;} }; };