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