Функция 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.
Чтобы отправить запросы ввода-вывода в целевые объекты ввода-вывода, минипорт-драйвер может передать дескриптор объекта устройства 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) |