WdfWmiProviderCreate 함수(wdfwmi.h)

[KMDF에만 적용]

WdfWmiProviderCreate 메서드는 WMI 데이터 블록을 나타내는 WMI 공급자 개체를 만듭니다.

구문

NTSTATUS WdfWmiProviderCreate(
  [in]           WDFDEVICE                Device,
  [in]           PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   ProviderAttributes,
  [out]          WDFWMIPROVIDER           *WmiProvider
);

매개 변수

[in] Device

새 공급자 개체의 부모 개체가 될 프레임워크 디바이스 개체에 대한 핸들입니다. 디바이스 개체는 컨트롤 디바이스 개체일 수 없습니다.

[in] WmiProviderConfig

WMI 데이터 블록에 대한 구성 정보를 포함하는 호출자 초기화된 WDF_WMI_PROVIDER_CONFIG 구조체에 대한 포인터입니다.

[in, optional] ProviderAttributes

새 WMI 공급자 개체에 대한 드라이버 제공 개체 특성을 포함하는 호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 구조체의 ParentObject 멤버는 NULL이어야 합니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.

[out] WmiProvider

새 WMI 공급자 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.

반환 값

WdfWmiProviderCreate 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 감지되었습니다.
STATUS_INFO_LENGTH_MISMATCH
WmiProviderConfig 매개 변수가 가리키는 WDF_WMI_PROVIDER_CONFIG 구조체의 크기가 잘못되었습니다.
STATUS_INSUFFICIENT_RESOURCES
작업을 완료할 메모리가 부족했습니다.
STATUS_OBJECT_NAME_EXISTS
드라이버는 이미 지정된 디바이스 및 WMI 데이터 블록에 대해 WdfWmiProviderCreate 를 호출했습니다.
 

WdfWmiProviderCreate 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.

이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.

설명

드라이버가 공급자의 여러 인스턴스를 만드는 경우 드라이버가 WdfWmiProviderCreate 를 호출하여 WMI 공급자 개체를 만들어야 합니다. 드라이버가 공급자의 instance 하나만 만드는 경우 먼저 WdfWmiProviderCreate를 호출하지 않고 WdfWmiInstanceCreate를 호출할 수 있습니다.

드라이버는 언제든지 WdfWmiProviderCreate를 호출할 수 있지만 드라이버는 일반적으로 EvtDriverDeviceAdd 콜백 함수 내에서 WdfWmiProviderCreate를 호출합니다.

각 WMI 공급자 개체의 부모는 디바이스의 프레임워크 디바이스 개체입니다. 드라이버는 이 부모를 변경할 수 없으며 ParentObject 멤버 또는 WDF_OBJECT_ATTRIBUTES 구조체는 NULL이어야 합니다.

드라이버가 WdfWmiProviderCreate를 호출한 후 드라이버는 WdfWmiProviderGetDevice 를 호출하여 공급자 개체의 부모 디바이스 개체에 대한 핸들을 검색할 수 있습니다.

드라이버가 WMI 공급자 개체를 만든 후에는 드라이버가 개체를 삭제할 수 없습니다. 프레임워크는 디바이스를 나타내는 프레임워크 디바이스 개체를 삭제할 때 디바이스의 WMI 공급자 개체를 삭제합니다. WMI 공급자 개체는 최소 시스템 리소스를 사용합니다.

WdfWmiProviderCreate 메서드에 대한 자세한 내용은 Framework-Based 드라이버에서 WMI 지원을 참조하세요.

예제

다음 코드 예제에서는 WDF_WMI_PROVIDER_CONFIG 구조를 초기화하고 WdfWmiProviderCreate를 호출합니다.

WDF_WMI_PROVIDER_CONFIG config;
WDFWMIPROVIDER provider;
GUID providerGuid = MY_WMI_DATA_BLOCK_GUID;
NTSTATUS status;

WDF_WMI_PROVIDER_CONFIG_INIT(
                             &config,
                             providerGuid
                             );
config.Flags = WdfWmiProviderTracing;
config.EvtWmiProviderFunctionControl = MyProviderFunctionControl;

status = WdfWmiProviderCreate(
                              Device,
                              &config,
                              WDF_NO_OBJECT_ATTRIBUTES,
                              &provider
                              );

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
머리글 wdfwmi.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_WMI_PROVIDER_CONFIG

WdfWmiInstanceCreate

WdfWmiProviderGetDevice