Bagikan melalui


Fungsi WdfDriverCreate (wdfdriver.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfDriverCreate membuat objek driver kerangka kerja untuk driver panggilan.

Sintaks

NTSTATUS WdfDriverCreate(
  [in]            PDRIVER_OBJECT         DriverObject,
  [in]            PCUNICODE_STRING       RegistryPath,
  [in, optional]  PWDF_OBJECT_ATTRIBUTES DriverAttributes,
  [in]            PWDF_DRIVER_CONFIG     DriverConfig,
  [out, optional] WDFDRIVER              *Driver
);

Parameter

[in] DriverObject

Penunjuk ke struktur DRIVER_OBJECT yang mewakili objek driver Windows Driver Model (WDM). Driver menerima pointer ini sebagai input ke rutinitas DriverEntry-nya .

[in] RegistryPath

Penunjuk ke struktur UNICODE_STRING yang berisi string jalur registri yang diterima driver sebagai input ke rutinitas DriverEntry-nya .

[in, optional] DriverAttributes

Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang dialokasikan penelepon. (Anggota ParentObject struktur harus NULL.) Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.

[in] DriverConfig

Penunjuk ke struktur WDF_DRIVER_CONFIG yang dialokasikan penelepon.

[out, optional] Driver

Penunjuk ke lokasi yang menerima handel ke objek driver kerangka kerja baru. Parameter ini bersifat opsional dan dapat WDF_NO_HANDLE.

Nilai kembali

WdfDriverCreate mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_DRIVER_INTERNAL_ERROR
Driver bernama WdfDriverCreate lebih dari sekali.
STATUS_INVALID_PARAMETER
Driver non-Plug and Play (PnP) menentukan fungsi panggilan balik EvtDriverDeviceAdd.
 

Untuk informasi selengkapnya tentang nilai yang dikembalikan, lihat Kesalahan Pembuatan Objek Kerangka Kerja.

Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.

Pemeriksaan bug sistem terjadi jika parameter DriverObject, RegistryPath, atau DriverConfig adalah NULL.

Keterangan

Driver yang menggunakan Kernel-Mode Driver Framework harus memanggil WdfDriverCreate dari dalam rutinitas DriverEntry-nya , sebelum memanggil rutinitas kerangka kerja lainnya. Untuk informasi selengkapnya tentang DriverEntry, lihat DriverEntry untuk Driver berbasis Kerangka Kerja.

Sebelum driver Anda memanggil WdfDriverCreate, driver harus memanggil WDF_DRIVER_CONFIG_INIT untuk menginisialisasi struktur WDF_DRIVER_CONFIG .

Objek driver kerangka kerja adalah bagian atas pohon objek kerangka kerja driver Anda dan karenanya tidak memiliki objek induk.

Jika driver Anda menyediakan fungsi panggilan balik EvtCleanupCallback atau EvtDestroyCallback untuk objek driver, perhatikan bahwa kerangka kerja memanggil fungsi panggilan balik ini di IRQL = PASSIVE_LEVEL.

Contoh

Contoh kode berikut adalah rutinitas DriverEntry yang menginisialisasi struktur WDF_DRIVER_CONFIG lalu membuat objek driver kerangka kerja.

NTSTATUS
DriverEntry(
    IN PDRIVER_OBJECT  DriverObject,
    IN PUNICODE_STRING  RegistryPath
    )
{
    WDF_DRIVER_CONFIG  config;
    NTSTATUS  status = STATUS_SUCCESS;

    WDF_DRIVER_CONFIG_INIT(
                           &config,
                           MyEvtDeviceAdd
                           );
    config.EvtDriverUnload = MyEvtDriverUnload;
    status = WdfDriverCreate(
                             DriverObject,
                             RegistryPath,
                             WDF_NO_OBJECT_ATTRIBUTES,
                              &config,
                             WDF_NO_HANDLE
                             );
    if (!NT_SUCCESS(status)) {
        TraceEvents(
                    TRACE_LEVEL_ERROR,
                    DBG_PNP,
                    "WdfDriverCreate failed with status %!STATUS!",
                    status
                    );
    }
    return status;
}

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header wdfdriver.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI ChangeQueueState(kmdf), DriverAttributeChanged(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MiniportOnlyWdmDevice(kmdf)

Lihat juga

DRIVER_OBJECT

DriverEntry

EvtDriverDeviceAdd

UNICODE_STRING

WDF_DRIVER_CONFIG

WDF_DRIVER_CONFIG_INIT

WDF_OBJECT_ATTRIBUTES