Windows 드라이버에 범주를 추가하는 방법

Configuration Manager 범주에 대한 고유 식별자를 SMS_Driver Server WMI 클래스CategoryInstance_UniqueIDs 배열 속성에 추가하여 Windows 드라이버에 범주를 추가합니다. 배열에는 SMS_CategoryInstance Server WMI 클래스CategoryInstance_UniqueID 속성 값과 일치하는 하나 이상의 문자열 식별자가 포함되어 있습니다. 시스템의 각 범주에 대한 SMS_CategoryInstance Server WMI 클래스 개체의 인스턴스가 있습니다.

참고

드라이버 범주의 고유 식별자에는 "DriverCategories" 텍스트가 앞에 추가됩니다. 다른 범주 형식에는 다른 텍스트가 있습니다.

범주에는 지역화 정보가 있으며 SMS_CategoryInstance Server WMI 클래스LocalizedCategoryInstanceName 속성에서 범주의 표시 이름을 가져옵니다.

Windows 드라이버에 범주를 추가하려면

  1. SMS 공급자에 대한 연결을 설정합니다. 자세한 내용은 SMS 공급자 기본 사항을 참조하세요.

  2. 범주를 추가하려는 드라이버의 SMS_Driver 개체를 가져옵니다.

  3. 원하는 범주와 일치하는 SMS_CategoryInstance Server WMI 클래스 개체에서 범주 이름 식별자를 가져옵니다.

  4. 범주 식별자를 SMS_Driver Server WMI 클래스 개체 CategoryInstance_UniqueIDs 배열 속성에 추가합니다.

  5. SMS_Driver 서버 WMI 클래스 변경 내용을 커밋합니다.

예시

다음 예제 메서드는 Windows 드라이버에 범주를 추가합니다. driverID 는 유효한 SMS_Driver 서버 WMI 클래스 개체입니다. 자세한 내용은 운영 체제 배포 드라이버 관리 정보를 참조하세요.

샘플 코드 호출에 대한 자세한 내용은 코드 조각 Configuration Manager 호출을 참조하세요.

Sub AddDriverCategory(connection,driver,categoryName)  

    Dim categories  
    Dim category  
    Dim driverCategoryID  
    Dim categoryID  
    Dim results  
    Dim existingCategory  

    ' Find the category that matches the supplied category name.  
    Set results = _  
      connection.ExecQuery("SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" _  
      + categoryName+ "'")  

    ' If the category was found, add it to the driver.  
    For Each category in results  

        If IsNull(driver.CategoryInstance_UniqueIDs) or UBound (driver.CategoryInstance_UniqueIDs) = -1 Then  
            ' It is empty. Add the category.  
            driver.CategoryInstance_UniqueIDs =  Array(category.CategoryInstance_UniqueID)  
         Else  

            ' Determine if the category is already applied to the driver.  
            For each existingCategory in driver.CategoryInstance_UniqueIDs   
                if existingCategory = category.CategoryInstance_UniqueID Then  
                    WScript.Echo "Already added"  
                    Exit Sub  
                End If  
            Next      

            ' Add the category.  
            categories = driver.CategoryInstance_UniqueIDs  
            Redim Preserve categories (UBound (driver.CategoryInstance_UniqueIDs)+1)  
            categories (Ubound (categories)) =  category.CategoryInstance_UniqueID   
            driver.CategoryInstance_UniqueIDs = categories  
        End If  

        driver.Put_         
    Next      
End Sub  
public void AddDriverCategory(  
    WqlConnectionManager connection,  
    IResultObject driver,  
    string categoryName)  
{  
    try  
    {  
        // Get the category.  
        IResultObject results = connection.QueryProcessor.ExecuteQuery(  
        "SELECT * From SMS_CategoryInstance WHERE LocalizedCategoryInstanceName = '" + categoryName + "'");  

       ArrayList driverCategories = new ArrayList(driver["CategoryInstance_UniqueIDs"].StringArrayValue);//;driverCategories);  

        foreach (IResultObject category in results)  
        {  
            foreach (string driverCategory in driverCategories)  
            {  
                // Do nothing if the driver already has the category.  
                if (driverCategory == category["CategoryInstance_UniqueID"].StringValue)  
                {  
                    Console.WriteLine("Already exists");  
                    return;  
                }  
           }  

            // Add the category to the action.  
           driverCategories.Add(category["CategoryInstance_UniqueID"].StringValue);  
        }  

        // Update the driver.  
        driver["CategoryInstance_UniqueIDs"].StringArrayValue = (string[])driverCategories.ToArray(typeof(string));  
        driver.Put();  

    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed to add the category" + e.Message);  
        throw;  
    }  
}  

예제 메서드에는 다음 매개 변수가 있습니다.

매개 변수 형식 설명
Connection -관리: WqlConnectionManager
- VBScript: SWbemServices
SMS 공급자에 대한 유효한 연결입니다.
driver -관리: IResultObject
-Vbscript: SWbemObject
Windows 드라이버입니다. SMS_Driver 서버 WMI 클래스의 인스턴스입니다.
categoryName -관리: String
-Vbscript: String
기존 범주의 이름입니다. SMS_CategoryInstance 서버 WMI 클래스LocalizedCategoryInstanceName 속성과 일치합니다.

코드 컴파일

이 C# 예제에는 다음이 필요합니다.

네임 스페이스

시스템

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

어셈블리

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

강력한 프로그래밍

오류 처리에 대한 자세한 내용은 Configuration Manager 오류 정보를 참조하세요.

.NET Framework 보안

Configuration Manager 애플리케이션 보안에 대한 자세한 내용은 역할 기반 관리 Configuration Manager 참조하세요.

참고 항목

운영 체제 배포 드라이버 관리 정보
Windows 드라이버에서 범주를 제거하는 방법