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


Функция 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. К дополнительным возвращаемым значениям относятся:

Код возврата Описание
СТАТУС_НЕДОСТАТОЧНЫЕ_РЕСУРСЫ
Не удалось выделить объект устройства.
 

Список других возвращаемых значений, которые WdfDeviceMiniportCreate, см. .

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

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

Замечания

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

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

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

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

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

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

Дополнительные сведения о драйверах минипорта см. в разделе Using Kernel-Mode Driver Framework with Miniport Driver Driver Framework.

Примеры

В следующем примере кода вызывается 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