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 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
잘못된 매개 변수가 감지되었습니다. |
|
WmiProviderConfig 매개 변수가 가리키는 WDF_WMI_PROVIDER_CONFIG 구조체의 크기가 잘못되었습니다. |
|
작업을 완료할 메모리가 부족했습니다. |
|
드라이버는 이미 지정된 디바이스 및 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) |