Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо только к 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, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Обнаружен недопустимый параметр. |
|
Размер структуры 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 (include Wdf.h) |
библиотеки | Wdf01000.sys (см. управление версиями библиотеки Платформы).) |
IRQL | <=DISPATCH_LEVEL |
правил соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |