Fungsi WdfTimerCreate (wdftimer.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfTimerCreate membuat objek timer kerangka kerja.
Sintaks
NTSTATUS WdfTimerCreate(
[in] PWDF_TIMER_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] WDFTIMER *Timer
);
Parameter
[in] Config
Penunjuk ke struktur WDF_TIMER_CONFIG .
[in] Attributes
Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang berisi atribut objek untuk objek timer baru.
[out] Timer
Penunjuk ke lokasi yang menerima handel ke objek pengatur waktu kerangka kerja baru.
Nilai kembali
WdfTimerCreate mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter Atribut adalah NULL, atau anggota ParentObject dari struktur WDF_OBJECT_ATTRIBUTES yang ditentukan Atribut adalah NULL. |
|
Parameter yang tidak valid ditentukan. |
|
Anggota ParentObject dari struktur WDF_OBJECT_ATTRIBUTES tidak mereferensikan objek perangkat kerangka kerja atau objek yang rantai induknya mengarah ke objek perangkat kerangka kerja. |
|
Memori tidak cukup. |
|
Anggota AutomaticSerialization dari struktur WDF_TIMER_CONFIG diatur ke TRUE, tetapi tingkat eksekusi objek perangkat induk diatur ke WdfExecutionLevelPassive. |
Untuk daftar nilai pengembalian lain yang mungkin dikembalikan oleh metode WdfTimerCreate , lihat Kesalahan Pembuatan Objek Kerangka Kerja.
Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.
Keterangan
Ketika driver Anda memanggil WdfTimerCreate, driver harus menyediakan struktur WDF_OBJECT_ATTRIBUTES dan harus menentukan objek induk di anggota ParentObject struktur. Objek induk dapat menjadi objek perangkat kerangka kerja atau objek apa pun yang rantai induknya mengarah ke objek perangkat kerangka kerja. Kerangka kerja akan menghapus objek timer saat menghapus objek perangkat.
Setelah membuat objek timer, driver harus memanggil WdfTimerStart untuk memulai jam timer terlepas dari apakah timer berkala atau tidak.
Jika driver Anda menyediakan fungsi panggilan balik EvtCleanupCallback atau EvtDestroyCallback untuk objek timer kerangka kerja, perhatikan bahwa kerangka kerja memanggil fungsi panggilan balik ini di IRQL = PASSIVE_LEVEL.
Untuk informasi selengkapnya tentang objek timer kerangka kerja, lihat Menggunakan Timer.
Contoh
Contoh kode berikut menginisialisasi struktur WDF_TIMER_CONFIG dan struktur WDF_OBJECT_ATTRIBUTES lalu memanggil WdfTimerCreate.
WDF_TIMER_CONFIG timerConfig;
WDF_OBJECT_ATTRIBUTES timerAttributes;
WDFTIMER timerHandle;
NTSTATUS status;
WDF_TIMER_CONFIG_INIT(
&timerConfig,
MyEvtTimerFunc
);
timerConfig.AutomaticSerialization = TRUE;
WDF_OBJECT_ATTRIBUTES_INIT(&timerAttributes);
timerAttributes.ParentObject = DeviceHandle;
status = WdfTimerCreate(
&timerConfig,
&timerAttributes,
&timerHandle
);
if (!NT_SUCCESS(status)) {
return status;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdftimer.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk