Fungsi WdfRequestAllocateTimer (wdfrequest.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfRequestAllocateTimer mengalokasikan timer untuk permintaan I/O tertentu.
Sintaks
NTSTATUS WdfRequestAllocateTimer(
[in] WDFREQUEST Request
);
Parameter
[in] Request
Handel ke objek permintaan kerangka kerja.
Nilai kembali
WdfRequestAllocateTimer mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter input tidak valid. |
|
Timer tidak dapat dialokasikan. |
Metode ini juga mungkin mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Jika driver Anda menentukan nilai waktu habis saat memanggil WdfRequestSend, driver harus memanggil WdfRequestAllocateTimer sebelum memanggil WdfRequestSend. Hal ini memastikan bahwa panggilan ke WdfRequestSend tidak akan gagal jika tidak ada sumber daya sistem yang cukup untuk mengalokasikan timer.
Jika timer sudah dialokasikan untuk permintaan yang ditentukan, WdfRequestAllocateTimer mengembalikan STATUS_SUCCESS.
Contoh
Contoh kode berikut menginisialisasi struktur WDF_REQUEST_SEND_OPTIONS , mengalokasikan objek timer untuk permintaan I/O, lalu memanggil WdfRequestSend.
NTSTATUS status;
WDF_REQUEST_SEND_OPTIONS options;
BOOLEAN requestSend;
WDF_REQUEST_SEND_OPTIONS_INIT(
&options,
WDF_REQUEST_SEND_OPTION_TIMEOUT
);
WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(
&options,
WDF_ABS_TIMEOUT_IN_SEC(TIME_OUT_VALUE)
);
status = WdfRequestAllocateTimer(
request
);
if (!NT_SUCCESS(status)){
return status;
...
requestSend = WdfRequestSend(
request,
ioTarget,
&options
);
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfrequest.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |