[僅適用於 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 可以傳回的其他傳回值清單,請參閱 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。
如需迷你埠驅動程式的詳細資訊,請參閱 搭配使用 Kernel-Mode Driver Framework 與 Miniport Drivers。
範例
下列程式代碼範例會呼叫 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 (包括 Wdfminiport.h) |
程式庫 | Wdf01000.sys (請參閱架構連結庫版本控制。) |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | DriverCreate(kmdf),KmdfIrql(kmdf),KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf) |