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


Функция 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. (Элемент ParentObject структуры должен иметь значение 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 (включая 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