Функция WdfDeviceMiniportCreate (wdfminiport.h)

[Применимо только к KMDF]

Метод WdfDeviceMiniportCreate создает объект устройства платформы, который может использовать драйвер минипорта.

Синтаксис

NTSTATUS WdfDeviceMiniportCreate(
  [in]           WDFDRIVER              Driver,
  [in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
  [in]           PDEVICE_OBJECT         DeviceObject,
  [in, optional] PDEVICE_OBJECT         AttachedDeviceObject,
  [in, optional] PDEVICE_OBJECT         Pdo,
  [out]          WDFDEVICE              *Device
);

Параметры

[in] Driver

Дескриптор объекта драйвера платформы драйвера, полученный при предыдущем вызове WdfDriverCreate.

[in, optional] Attributes

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

[in] DeviceObject

Указатель на структуру WDM DEVICE_OBJECT , представляющую объект функционального устройства (FDO) для драйвера мини-порта.

[in, optional] AttachedDeviceObject

Указатель на структуру WDM DEVICE_OBJECT, представляющую следующий нижний объект устройства в стеке устройств.

[in, optional] Pdo

Указатель на структуру WDM DEVICE_OBJECT, представляющую объект физического устройства (PDO) для устройства.

[out] Device

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

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

Если метод WdfDeviceMiniportCreate не обнаруживает ошибок, он возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES
Не удалось выделить объект устройства.
 

Список других возвращаемых значений, возвращаемых WdfDeviceMiniportCreate , см. в разделе "Ошибки создания объектов Платформы".

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

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

Комментарии

Если драйвер мини-порта использует платформу, драйвер минипорта должен вызвать WdfDeviceMiniportCreate , когда драйвер порта сообщает ему, что устройство доступно. Драйверы минипорта не вызывают WdfDeviceCreate.

Драйвер минипорта может получить свои указатели DeviceObject, AttachedDeviceObject и PDO от драйвера порта. Например, драйвер мини-порта NDIS может получить эти указатели, вызвав NdisMGetDeviceProperty.

Следующие ограничения применяются к объектам устройств платформы, которые получает драйвер минипорта путем вызова WdfDeviceMiniportCreate:

  • Устройство, которое представляет объект устройства, должно поддерживать Plug and Play.
  • Объект устройства не поддерживает какие-либо функции обратного вызова событий объекта устройства. Поэтому драйвер порта должен обрабатывать все операции Plug and Play (PnP) и управления питанием.
  • Дескриптор объекта устройства не может быть передан в WdfWmiProviderCreate, поэтому драйвер порта должен предоставить необходимую поддержку инструментария управления Windows (WMI).
  • Дескриптор объекта устройства нельзя передать в WdfIoQueueCreate, поэтому платформа не поддерживает очереди ввода-вывода для драйверов минипорта.
  • Дескриптор объекта устройства нельзя передать в WdfInterruptCreate, поэтому платформа не поддерживает объекты прерываний для драйверов минипорта.
  • Дескриптор объекта устройства нельзя передать в методы объекта устройства общей платформы, кроме WdfDeviceGetIoTarget, WdfDeviceWdmGetObject, WdfDeviceWdmGetAttachedDevice и WdfDeviceWdmGetPhysicalDevice.
  • Дескриптор объекта устройства не может передаваться в любые методы FDO платформы , кроме WdfFdoQueryForInterface.
  • Дескриптор объекта устройства не может передаваться в любые методы PDO платформы или WdfChildListCreate, поэтому драйвер минипорта не может быть драйвером автобуса.
  • В конечном итоге драйвер должен вызвать WdfObjectDelete , чтобы удалить объект устройства, создаваемый WdfDeviceMiniportCreate .
Объекты устройств Платформы, создаваемые WdfDeviceMiniportCreate , можно использовать в качестве родительского объекта для любого последующего созданного объекта платформы.

Чтобы отправлять запросы ввода-вывода в целевые объекты ввода-вывода, драйвер минипорта может передать дескриптор объекта устройства в WdfDeviceGetIoTarget, WdfIoTargetCreate или WdfUsbTargetDeviceCreateWithParameters.

Драйвер минипорта может передать дескриптор объекта устройства в WdfDmaEnablerCreate , если устройство поддерживает операции DMA.

Дополнительные сведения о драйверах минипорта см. в разделе "Использование платформы драйверов Kernel-Mode с драйверами miniport".

Примеры

В следующем примере кода вызывается NdisMGetDeviceProperty для получения указателей DeviceObject, AttachedDeviceObject и PDO ; инициализирует пространство контекста объекта устройства и создает объект минипорта устройства.

WDF_OBJECT_ATTRIBUTES  ObjectAttributes;

NdisMGetDeviceProperty(
                       MiniportAdapterHandle,
                       &Adapter->Pdo,
                       &Adapter->Fdo,
                       &Adapter->NextDeviceObject,
                       NULL,
                       NULL
                       );
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
                                        &ObjectAttributes,
                                        WDF_DEVICE_INFO
                                        );
ntStatus = WdfDeviceMiniportCreate(
                                   WdfGetDriver(),
                                   &ObjectAttributes,
                                   Adapter->Fdo,
                                   Adapter->NextDeviceObject,
                                   Adapter->Pdo,
                                   &Adapter->WdfDevice
                                   );
if (!NT_SUCCESS (ntStatus)) {
    Status = NDIS_STATUS_FAILURE;
    break;
}

Требования

   
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Заголовок wdfminiport.h (include Wdfminiport.h)
Библиотека Wdf01000.sys (см. управление версиями библиотеки платформы).)
IRQL PASSIVE_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также раздел

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate

WdfDriverMiniportUnload