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 |
---|---|
|
Driver bernama WdfDriverCreate lebih dari sekali. |
|
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) |