共用方式為


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