共用方式為


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 可以傳回的其他傳回值清單,請參閱 Framework 物件建立錯誤

方法可能會 傳回其他NTSTATUS 值。

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

備註

如果您的迷你埠驅動程式使用架構,迷你埠驅動程序應該呼叫 WdfDeviceMiniportCreate,當其埠驅動程式通知裝置可用時。 迷你連接埠驅動程式不會呼叫 WdfDeviceCreate

您的迷你埠驅動程式可能會收到其 DeviceObjectAttachedDeviceObject,以及從其埠驅動程式 PDO 指標。 例如,NDIS 迷你埠驅動程式可以呼叫 NdisMGetDeviceProperty來取得這些指標。

下列限制適用於迷你埠驅動程序藉由呼叫 WdfDeviceMiniportCreate取得的架構裝置物件:

  • 裝置物件所代表的裝置必須支援隨插即用。
  • 裝置物件不支援任何裝置物件的事件回呼函式。 因此,埠驅動程式必須處理所有隨插即用 (PnP) 和電源管理作業。
  • 裝置物件句柄無法傳遞至 WdfWmiProviderCreate,因此埠驅動程式必須提供 Windows Management Instrumentation (WMI) 的任何必要支援。
  • 裝置物件句柄無法傳遞至 WdfIoQueueCreate,因此架構不支援迷你埠驅動程式的 I/O 佇列。
  • 裝置物件句柄無法傳遞至 WdfInterruptCreate,因此架構不支援迷你埠驅動程式的中斷物件。
  • 裝置物件句柄無法傳遞至任何一般架構裝置物件方法,WdfDeviceGetIoTargetWdfDeviceWdmGetDeviceObjectWdfDeviceWdmGetAttachedDeviceWdfDeviceWdmGetPhysicalDevice
  • 除了 WdfFdoQueryForInterface 之外,裝置物件句柄無法傳遞至任何 架構 FDO 方法
  • 裝置物件句柄無法傳遞至任何 架構 PDO 方法,WdfChildListCreate,因此迷你埠驅動程式不能是總線驅動程式。
  • 驅動程式最終必須呼叫 WdfObjectDelete,以刪除 WdfDeviceMiniportCreate 建立的裝置物件。
WdfDeviceMiniportCreate 建立的架構裝置物件,可作為任何後續建立架構物件的父物件。

為了將 I/O 要求傳送至 I/O 目標,迷你埠驅動程式可能會將裝置物件句柄傳遞至 WdfDeviceGetIoTargetWdfIoTargetCreateWdfUsbTargetDeviceCreateWithParameters

如果裝置支援 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)

另請參閱

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate

WdfDriverMiniportUnload