Fungsi WdfDeviceMiniportCreate (wdfminiport.h)

[Berlaku untuk KMDF saja]

Metode WdfDeviceMiniportCreate membuat objek perangkat kerangka kerja yang dapat digunakan driver miniport.

Sintaks

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
);

Parameter

[in] Driver

Handel ke objek driver kerangka kerja driver, diperoleh dengan panggilan sebelumnya ke WdfDriverCreate.

[in, optional] Attributes

Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang dialokasikan pemanggil yang berisi atribut untuk objek baru. Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.

[in] DeviceObject

Penunjuk ke struktur DEVICE_OBJECT WDM yang mewakili objek perangkat fungsi (FDO) untuk driver miniport.

[in, optional] AttachedDeviceObject

Penunjuk ke WDM DEVICE_OBJECT struktur yang mewakili objek perangkat berikutnya yang lebih rendah dalam tumpukan perangkat.

[in, optional] Pdo

Penunjuk ke struktur DEVICE_OBJECT WDM yang mewakili objek perangkat fisik (PDO) untuk perangkat.

[out] Device

Penunjuk ke lokasi yang menerima handel ke objek perangkat kerangka kerja baru.

Nilai kembali

Jika metode WdfDeviceMiniportCreate tidak mengalami kesalahan, metode tersebut mengembalikan STATUS_SUCCESS. Nilai pengembalian tambahan meliputi:

Menampilkan kode Deskripsi
STATUS_INSUFFICIENT_RESOURCES
Objek perangkat tidak dapat dialokasikan.
 

Untuk daftar nilai pengembalian lain yang dapat dikembalikan WdfDeviceMiniportCreate , lihat Kesalahan Pembuatan Objek Kerangka Kerja.

Metode ini mungkin mengembalikan nilai NTSTATUS lainnya.

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Keterangan

Jika driver miniport Anda menggunakan kerangka kerja, driver miniport harus memanggil WdfDeviceMiniportCreate ketika driver port menginformasikan bahwa perangkat tersedia. Driver miniport tidak memanggil WdfDeviceCreate.

Driver miniport Anda mungkin menerima pointer DeviceObject, AttachedDeviceObject, dan PDO dari driver portnya. Misalnya, driver miniport NDIS dapat memperoleh pointer ini dengan memanggil NdisMGetDeviceProperty.

Pembatasan berikut berlaku untuk objek perangkat kerangka kerja yang diperoleh driver miniport dengan memanggil WdfDeviceMiniportCreate:

  • Perangkat yang diwakili objek perangkat harus mendukung Plug and Play.
  • Objek perangkat tidak mendukung fungsi panggilan balik peristiwa objek perangkat apa pun. Oleh karena itu, driver port harus menangani semua operasi Plug and Play (PnP) dan manajemen daya.
  • Handel objek perangkat tidak dapat diteruskan ke WdfWmiProviderCreate, sehingga driver port harus memberikan dukungan yang diperlukan untuk Windows Management Instrumentation (WMI).
  • Handel objek perangkat tidak dapat diteruskan ke WdfIoQueueCreate, sehingga kerangka kerja tidak mendukung antrean I/O untuk driver miniport.
  • Handel objek perangkat tidak dapat diteruskan ke WdfInterruptCreate, sehingga kerangka kerja tidak mendukung objek interupsi untuk driver miniport.
  • Handel objek perangkat tidak dapat diteruskan ke metode objek perangkat kerangka kerja umum kecuali WdfDeviceGetIoTarget, WdfDeviceWdmGetDeviceObject, WdfDeviceWdmGetAttachedDevice, dan WdfDeviceWdmGetPhysicalDevice.
  • Handel objek perangkat tidak dapat diteruskan ke metode FDO kerangka kerja apa pun kecuali WdfFdoQueryForInterface.
  • Handel objek perangkat tidak dapat diteruskan ke metode PDO kerangka kerja apa pun atau ke WdfChildListCreate, sehingga driver miniport tidak dapat menjadi driver bus.
  • Driver akhirnya harus memanggil WdfObjectDelete untuk menghapus objek perangkat yang dibuat WdfDeviceMiniportCreate .
Objek perangkat kerangka kerja yang dibuat WdfDeviceMiniportCreate dapat digunakan sebagai objek induk untuk objek kerangka kerja yang kemudian dibuat.

Untuk mengirim permintaan I/O ke target I/O, driver miniport mungkin melewati handel objek perangkat ke WdfDeviceGetIoTarget, WdfIoTargetCreate, atau WdfUsbTargetDeviceCreateWithParameters.

Driver miniport dapat meneruskan handel objek perangkat ke WdfDmaEnablerCreate jika perangkat mendukung operasi DMA.

Untuk informasi selengkapnya tentang driver miniport, lihat Menggunakan Kernel-Mode Driver Framework dengan Driver Miniport.

Contoh

Contoh kode berikut memanggil NdisMGetDeviceProperty untuk mendapatkan pointer DeviceObject, AttachedDeviceObject, dan PDO ; menginisialisasi ruang konteks objek perangkat, dan membuat objek perangkat miniport.

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;
}

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfminiport.h (termasuk Wdfminiport.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Lihat juga

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate

WdfDriverMiniportUnload