클래스 공급자 등록
WMI 클래스 공급자를 만들려면 __ClassProviderRegistration인스턴스를 사용하여 공급자를 나타내는 __Win32Provider 인스턴스를 등록해야 합니다. COM 개체로서 공급자는 운영 체제 및 WMI에 등록해야 합니다. 다음 절차에서는 공급자 등록 설명된 대로 등록 프로세스를 이미 구현했다고 가정합니다. 공급자가 WMI 리포지토리에 대부분의 데이터를 저장하고 해당 데이터가 WMI 초기화에서만 업데이트되는 경우 클래스를 푸시 클래스 공급자로 등록합니다. 제공하는 데이터가 자주 변화하고 각 요청 시 코드에 의해 WMI로부터 동적으로 검색되는 경우, 공급자를 풀 클래스 공급자로 등록하는 것이 좋습니다.
다음 절차에서는 푸시 클래스 공급자를 등록하는 방법을 설명합니다.
푸시 클래스 공급자를 등록하려면
__ClassProviderRegistration 인스턴스의 InteractionType 속성을 1로 설정합니다.
__ClassProviderRegistration 인스턴스를 만드는 것은 등록 프로세스의 일부입니다.
다음 절차에서는 끌어오기 클래스 공급자를 등록하는 방법을 설명합니다.
끌어오기 클래스 공급자를 등록하려면
공급자를 설명하는 __Win32Provider 클래스의 인스턴스를 만듭니다.
공급자의 기능 집합을 설명하는 __ClassProviderRegistration 클래스의 인스턴스를 만듭니다.
__ClassProviderRegistration 인스턴스 내에서 다음을 수행합니다.
InteractionType 속성을 설정하여 공급자가 밀어넣기 공급자인지 아니면 끌어오기 공급자인지를 나타냅니다.
Dynamic 및 Provider 수식어를 사용하여 클래스를 태그하세요.
동적 한정자는 WMI가 공급자를 사용하여 클래스 인스턴스를 검색해야 한다는 신호를 표시합니다. Provider 한정자는 WMI에서 사용해야 하는 공급자의 이름을 지정합니다.
ResultSetQueries, ReferencedSetQueries및 UnsupportedQueries 속성을 정의합니다.
이러한 쿼리 속성은 지원되는 클래스에 대한 자세한 정보를 설명합니다.
__ClassProviderRegistration 클래스에는 클래스의 지원되는 다양한 메서드를 설명하는 것 외에도 일련의 쿼리를 설명하는 세 가지 속성이 있습니다. 함께 사용하는 경우 이러한 세 가지 속성은 클래스 공급자가 제공하는 클래스의 전체 범위를 설명합니다. 각 쿼리 속성에는 지원되는 클래스 유형을 지정하는 "스키마 쿼리"라는 WQL SELECT 문이 포함되어 있습니다. 스키마 쿼리는 meta_class이라는 특수 클래스 이름을 지정합니다. 다음 표에서는 쿼리 속성을 나열합니다.
재산 | 설명 |
---|---|
resultSetQueries | 공급자가 제공하는 결과 집합에 대한 정보를 포함합니다. WMI는 이 정보를 사용하여 애플리케이션의 쿼리를 충족하도록 공급자를 호출할지 여부를 결정합니다. 이 속성은 공급자가 제공할 수 있는 모든 클래스 집합 또는 사용 가능한 클래스의 상위 집합을 설명하지만 하위 집합은 설명하지 않습니다. WMI를 사용하려면 공급자가 이 속성에 하나 이상의 쿼리를 지정해야 합니다. 다음 예제에서는 공급자가 Win32_LogicalDisk 클래스를 참조하는 연결 클래스를 제공할 때 ResultSetQueries 설정하는 방법을 보여 줍니다. SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk" 다음 예제에서는 공급자가 알 수 없는 다른 클래스를 참조하는 클래스를 제공할 때 일반 쿼리를 지정하는 방법을 보여 줍니다. SELECT * FROM meta_class 다음 예제에서는 공급자가 서브클래스만 제공하지만 지정된 클래스의 부모 클래스는 제공하지 않을 때 ResultSetQueries 설정하는 방법을 보여 줍니다. SELECT * FROM meta_class WHERE __Dynasty = "MyClass" 다음 예제에서는 공급자가 모든 클래스 및 서브클래스를 제공할 때 특수 __this 속성을 사용하고 ResultSetQueries 설정하는 방법을 보여 줍니다. SELECT * FROM meta_class WHERE __this ISA "MyClass" |
referencedSetQueries | 연결 및 참조가 요청되는 스키마 쿼리에서 공급자를 무시할지 여부를 결정합니다. 연결 클래스를 제공할 수 있는 공급자는 ReferencedSetQueries 속성에 하나 이상의 쿼리를 포함해야 합니다. |
지원되지 않는 쿼리 | 클래스 공급자가 제공하지 않는 결과 집합에 대한 정보를 포함합니다. WMI는 이 속성을 사용하여 ResultSetQueries내포된 클래스 집합을 뺍니다. 예를 들어, 클래스 공급자는 ResultSetQueries에서 MyClass에서 파생된 모든 클래스에 대한 지원을 지정하고, UnsupportedQueries에서 특정 파생 클래스에 대한 지원이 부족함을 지정할 수 있습니다. 공급자가 쿼리 처리 기능에 대해 등록할 수 있는 정보가 많을수록 더 빠르게 실행됩니다. UnsupportedQueries 속성에 하나 이상의 쿼리를 입력하는 것은 특정한 방법이며 공급자가 제공하지 않는 클래스를 사용하는 경우 특히 중요합니다. UnsupportedQueries 속성의 쿼리에 나열된 클래스에 대한 요청이 이루어지면 WMI는 클래스 자체를 제공하거나 대체 공급자를 호출하여 제공할 수 있습니다. |
WMI는 OR 절을 지원하지 않으므로 각 클래스에 대해 별도의 쿼리를 만들어야 합니다.
다음 쿼리는 클래스 공급자가 MyClass1, MyClass2 및 MyClass3을 제공할 때 ResultSetQueries 지정됩니다.
SELECT * FROM meta_class WHERE __Class = "MyClass1"
SELECT * FROM meta_class WHERE __Class = "MyClass2"
SELECT * FROM meta_class WHERE __Class = "MyClass3"
관리자만 __Win32Provider 및 __ClassProviderRegistration인스턴스를 만들어 공급자를 등록하거나 삭제할 수 있습니다.