Функция 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, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:
Код возврата | Описание |
---|---|
|
Обнаружен недопустимый параметр. |
|
Неправильный размер структуры WDF_WMI_PROVIDER_CONFIG , на которую указывает параметр WmiProviderConfig . |
|
Недостаточно памяти для завершения операции. |
|
Драйвер уже вызвал 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) |