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。 其他傳回值包括:
傳回碼 | Description |
---|---|
|
無法配置裝置物件。 |
如需 WdfDeviceMiniportCreate 可以傳回的其他傳回值清單,請參閱 Framework 物件建立錯誤。
方法可能會傳回其他 NTSTATUS值。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
如果您的迷你埠驅動程式使用架構,迷你埠驅動程序應該在埠驅動程式通知裝置可用時呼叫 WdfDeviceMiniportCreate 。 迷你埠驅動程式不會呼叫 WdfDeviceCreate。
您的迷你埠驅動程式可能會從其埠驅動程式接收其 DeviceObject、 AttachedDeviceObject 和 PDO 指標。 例如,NDIS 迷你埠驅動程式可以藉由呼叫 NdisMGetDeviceProperty 來取得這些指標。
下列限制適用於迷你埠驅動程序藉由呼叫 WdfDeviceMiniportCreate 取得的架構裝置物件:
- 裝置物件所代表的裝置必須支援 隨插即用。
- 裝置物件不支援任何裝置物件的事件回呼函式。 因此,埠驅動程式必須處理所有 隨插即用 (PnP) 和電源管理作業。
- 裝置物件句柄無法傳遞至 WdfWmiProviderCreate,因此埠驅動程式必須提供 Windows Management Instrumentation (WMI) 所需的支援。
- 裝置物件句柄無法傳遞至 WdfIoQueueCreate,因此架構不支援迷你埠驅動程式的 I/O 佇列。
- 裝置物件句柄無法傳遞至 WdfInterruptCreate,因此架構不支援迷你埠驅動程式的中斷物件。
- 裝置物件句柄無法傳遞至 WdfDeviceGetIoTarget、 WdfDeviceWdmGetDeviceObject、 WdfDeviceWdmGetAttachedDevice 和 WdfDeviceWdmGetPhysicalDevice 以外的任何一般架構裝置物件方法。
- 裝置物件句柄無法傳遞至 WdfFdoQueryForInterface 以外的任何架構 FDO 方法。
- 裝置物件句柄無法傳遞至任何 架構 PDO 方法 或 WdfChildListCreate,因此迷你埠驅動程式不能是總線驅動程式。
- 驅動程式最終必須呼叫 WdfObjectDelete ,才能刪除 WdfDeviceMiniportCreate 所 建立的裝置物件。
為了將 I/O 要求傳送至 I/O 目標,迷你埠驅動程式可能會將裝置物件句柄傳遞至 WdfDeviceGetIoTarget、 WdfIoTargetCreate 或 WdfUsbTargetDeviceCreateWithParameters。
如果裝置支援 DMA 作業,迷你埠驅動程式可以將裝置物件句柄傳遞至 WdfDmaEnablerCreate 。
如需迷你埠驅動程序的詳細資訊,請參閱 搭配Miniport驅動程式使用 Kernel-Mode 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;
}
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.0 |
標頭 | wdfminiport.h (包含 Wdfminiport.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |