Поделиться через


Функция 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

Указатель на инициализированную вызывающим WDF_WMI_PROVIDER_CONFIG структуру, содержащую сведения о конфигурации блока данных WMI.

[in, optional] ProviderAttributes

Указатель на выделенную вызывающим WDF_OBJECT_ATTRIBUTES структуру, содержащую атрибуты объекта, предоставленного драйвером, для нового объекта поставщика WMI. (Элемент ParentObj ect структуры должен быть NULL.) Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.

[out] WmiProvider

Указатель на расположение, которое получает дескриптор к новому объекту поставщика WMI.

Возвращаемое значение

WdfWmiProviderCreate возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_INVALID_PARAMETER
Обнаружен недопустимый параметр.
STATUS_INFO_LENGTH_MISMATCH
Размер структуры WDF_WMI_PROVIDER_CONFIG, на которую указывает параметр WmiProviderConfig, был неверным.
STATUS_INSUFFICIENT_RESOURCES
Для завершения операции недостаточно памяти.
STATUS_OBJECT_NAME_EXISTS
Драйвер уже вызвал WdfWmiProviderCreate для указанного блока данных и WMI.
 

Список других возвращаемых значений, возвращаемых методом WdfWmiProviderCreate, см. .

Этот метод также может возвращать другие значения NTSTATUS.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Драйвер должен вызвать WdfWmiProviderCreate, чтобы создать объект поставщика WMI, если драйвер создаст несколько экземпляров поставщика. Если драйвер создаст только один экземпляр поставщика, он может вызывать WdfWmiInstanceCreate без первого вызова WdfWmiProviderCreate.

Драйвер может вызывать WdfWmiProviderCreate в любое время, но драйверы обычно вызывают WdfWmiProviderCreate из своих Функций обратного вызова EvtDriverDeviceAdd.

Родительским объектом каждого объекта поставщика WMI является объект устройства платформы устройства. Драйвер не может изменить этот родительский элемент, а элемент ParentObject или структуру WDF_OBJECT_ATTRIBUTES должен быть NULL.

После вызова драйвера WdfWmiProviderCreateдрайвер может вызывать WdfWmiProviderGetDevice, чтобы получить дескриптор родительского объекта устройства поставщика.

После того как драйвер создает объект поставщика WMI, драйвер не может удалить объект. Платформа удаляет объекты поставщика WMI устройства при удалении объекта устройства платформы, представляющего устройство. Объекты поставщика WMI используют минимальные системные ресурсы.

Дополнительные сведения о методе WdfWmiProviderCreate см. в поддержке WMI в Framework-Based драйверах.

Примеры

В следующем примере кода инициализируется структура 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 (include 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