閱讀英文

共用方式為


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