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
STATUS_INSUFFICIENT_RESOURCES
無法配置裝置物件。
 

如需 WdfDeviceMiniportCreate 可以傳回的其他傳回值清單,請參閱 Framework 物件建立錯誤

方法可能會傳回其他 NTSTATUS值

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

備註

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

您的迷你埠驅動程式可能會從其埠驅動程式接收其 DeviceObjectAttachedDeviceObjectPDO 指標。 例如,NDIS 迷你埠驅動程式可以藉由呼叫 NdisMGetDeviceProperty 來取得這些指標。

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

WdfDeviceMiniportCreate 建立的架構裝置對象可作為任何後續建立架構物件的父物件。

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

如果裝置支援 DMA 作業,迷你埠驅動程式可以將裝置物件句柄傳遞至 WdfDmaEnablerCreate

如需迷你埠驅動程序的詳細資訊,請參閱 搭配Miniport驅動程式使用 Kernel-Mode Driver Framework

範例

下列程式代碼範例會呼叫 NdisMGetDeviceProperty 來取得 DeviceObjectAttachedDeviceObjectPDO 指標;初始化裝置物件的內容空間,並建立迷你埠裝置物件。

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)

另請參閱

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate

WdfDriverMiniportUnload