Функция WdfDriverCreate (wdfdriver.h)

[Применимо к KMDF и UMDF]

Метод WdfDriverCreate создает объект драйвера платформы для вызывающего драйвера.

Синтаксис

NTSTATUS WdfDriverCreate(
  [in]            PDRIVER_OBJECT         DriverObject,
  [in]            PCUNICODE_STRING       RegistryPath,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES DriverAttributes,
  [in]            PWDF_DRIVER_CONFIG     DriverConfig,
  [out, optional] WDFDRIVER              *Driver
);

Параметры

[in] DriverObject

Указатель на структуру DRIVER_OBJECT , представляющую объект драйвера WDM. Драйвер получает этот указатель в качестве входных данных в подпрограмму DriverEntry .

[in] RegistryPath

Указатель на структуру UNICODE_STRING , содержащую строку пути реестра, полученную драйвером в качестве входных данных в подпрограмму DriverEntry .

[in, optional] DriverAttributes

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

[in] DriverConfig

Указатель на структуру, выделенную вызывающим объектом WDF_DRIVER_CONFIG .

[out, optional] Driver

Указатель на расположение, которое получает дескриптор для нового объекта драйвера платформы. Этот параметр является необязательным и может быть WDF_NO_HANDLE.

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

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

Код возврата Описание
STATUS_DRIVER_INTERNAL_ERROR
Драйвер с именем WdfDriverCreate несколько раз.
STATUS_INVALID_PARAMETER
Драйвер, отличный от Plug and Play (PnP), указал функцию обратного вызова EvtDriverDeviceAdd.
 

Дополнительные сведения о возвращаемых значениях см. в разделе Об ошибках создания объектов платформы.

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

Проверка системной ошибки возникает, если параметр DriverObject, RegistryPath или DriverConfig имеет значение NULL.

Комментарии

Драйвер, использующий Kernel-Mode Driver Framework, должен вызывать WdfDriverCreate из своей подпрограммы DriverEntry перед вызовом других процедур платформы. Дополнительные сведения о DriverEntry см. в разделе DriverEntry для драйверов на основе платформы.

Прежде чем драйвер вызывает WdfDriverCreate, драйвер должен вызвать WDF_DRIVER_CONFIG_INIT для инициализации структуры WDF_DRIVER_CONFIG .

Объект драйвера платформы является верхней частью дерева объектов платформы драйвера и, следовательно, не имеет родительского объекта.

Если драйвер предоставляет функции обратного вызова EvtCleanupCallback или EvtDeqlCallback для объекта драйвера, обратите внимание, что платформа вызывает эти функции обратного вызова в IRQL = PASSIVE_LEVEL.

Примеры

Следующий пример кода — это подпрограмма DriverEntry , которая инициализирует структуру WDF_DRIVER_CONFIG, а затем создает объект драйвера платформы.

NTSTATUS
DriverEntry(
    IN PDRIVER_OBJECT  DriverObject,
    IN PUNICODE_STRING  RegistryPath
    )
{
    WDF_DRIVER_CONFIG  config;
    NTSTATUS  status = STATUS_SUCCESS;

    WDF_DRIVER_CONFIG_INIT(
                           &config,
                           MyEvtDeviceAdd
                           );
    config.EvtDriverUnload = MyEvtDriverUnload;
    status = WdfDriverCreate(
                             DriverObject,
                             RegistryPath,
                             WDF_NO_OBJECT_ATTRIBUTES,
                              &config,
                             WDF_NO_HANDLE
                             );
    if (!NT_SUCCESS(status)) {
        TraceEvents(
                    TRACE_LEVEL_ERROR,
                    DBG_PNP,
                    "WdfDriverCreate failed with status %!STATUS!",
                    status
                    );
    }
    return status;
}

Требования

   
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Минимальная версия UMDF 2,0
Заголовок wdfdriver.h (include Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Правила соответствия DDI ChangeQueueState(kmdf), DriverAttributeChanged(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MiniportOnlyWdmDevice(kmdf)

См. также

DRIVER_OBJECT

DriverEntry

EvtDriverDeviceAdd

UNICODE_STRING

WDF_DRIVER_CONFIG

WDF_DRIVER_CONFIG_INIT

WDF_OBJECT_ATTRIBUTES