다음을 통해 공유


MOF 배열

배열은 참조할 수 있는 데이터 형식이 동일한 데이터 값의 인덱스 목록입니다. 문자열 및 숫자 배열 외에 MOF는 포함 개체 및 참조의 배열도 지원합니다.

다음 규칙으로 MOF 배열을 정의합니다.

  • 속성 식별자 다음에 사용되는 대괄호는 클래스 정의에서 배열을 지정합니다.

    Class ArrayDataSample1
    {
        string strArray1[];
    };
    
  • 모든 배열은 1차원이어야 합니다.

  • 배열은 바인딩되기 않거나 명시적 크기가 있을 수 있습니다.

    Class MyClass
    {
        sint32 MyMethod1 ([in, id(0)] Win32_LogicalDisk DiskArray1[]);
        sint32 MyMethod2 ([in, id(0)] Win32_LogicalDisk DiskArray2[32]);
    };
    

    WMI는 바인딩된 배열과 바인딩되지 않은 배열을 SAFEARRAY 구조로 구현하므로 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;}
                   };
    };