Fungsi WdfRequestReuse (wdfrequest.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfRequestReuse menginisialisasi ulang objek permintaan kerangka kerja sehingga dapat digunakan kembali.

Sintaks

NTSTATUS WdfRequestReuse(
  [in] WDFREQUEST                Request,
  [in] PWDF_REQUEST_REUSE_PARAMS ReuseParams
);

Parameter

[in] Request

Handel ke objek permintaan kerangka kerja.

[in] ReuseParams

Penunjuk ke struktur WDF_REQUEST_REUSE_PARAMS yang dialokasikan penelepon.

Nilai kembali

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

Menampilkan kode Deskripsi
STATUS_INVALID_PARAMETER
Parameter input tidak valid.
STATUS_WDF_REQUEST_INVALID_STATE
Driver menyediakan IRP dalam struktur WDF_REQUEST_REUSE_PARAMS , tetapi objek permintaan yang ditentukan tidak diperoleh dari WdfRequestCreateFromIrp.
 

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

Keterangan

Driver berbasis kerangka kerja dapat menggunakan kembali objek permintaan kerangka kerja yang dibuat oleh panggilan sebelumnya ke WdfRequestCreate atau WdfRequestCreateFromIrp. Driver juga dapat menggunakan kembali objek permintaan yang telah mereka terima dari kerangka kerja, tetapi mereka tidak dapat mengatur bendera WDF_REQUEST_REUSE_SET_NEW_IRP untuk objek permintaan tersebut.

Catatan

Driver harus berhati-hati saat menggunakan kembali objek permintaan yang diterima dari kerangka kerja. Menggunakan kembali permintaan tersebut mengatur ulang bendera pembatalan IRP yang mendasar dan dapat mencegah driver panggilan membatalkan permintaan.

Driver dapat menggunakan kembali objek permintaan setelah permintaan asli selesai. Setelah driver memanggil WdfRequestReuse, konten permintaan harus diinisialisasi ulang. Driver dapat menentukan beberapa parameter permintaan dalam struktur WDF_REQUEST_REUSE_PARAMS .

Jika Anda ingin permintaan yang digunakan kembali memiliki fungsi panggilan balik CompletionRoutine , driver harus memanggil WdfRequestSetCompletionRoutine setelah memanggil WdfRequestReuse.

Untuk informasi selengkapnya tentang WdfRequestReuse, lihat Menggunakan Kembali Objek Permintaan Kerangka Kerja.

Contoh

Contoh kode berikut adalah bagian dari fungsi panggilan balik CompletionRoutine yang memanggil WdfRequestReuse sehingga driver dapat menggunakan kembali permintaan yang dialokasikan driver.

VOID
MyRequestCompletionRoutine(
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    PWDF_REQUEST_COMPLETION_PARAMS  CompletionParams,
    IN WDFCONTEXT  Context
    )
{
    WDF_REQUEST_REUSE_PARAMS  params;
    NTSTATUS  status;
...
    WDF_REQUEST_REUSE_PARAMS_INIT(
                                  &params,
                                  WDF_REQUEST_REUSE_NO_FLAGS,
                                  STATUS_SUCCESS
                                  );

    status = WdfRequestReuse(
                             Request,
                             &params
                             );
    ASSERT(NT_SUCCESS(status));
...
}

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), ReqSendFail(kmdf)

Lihat juga

CompletionRoutine

WDF_REQUEST_REUSE_PARAMS

WDF_REQUEST_REUSE_PARAMS_INIT

WdfRequestCreate

WdfRequestCreateFromIrp

WdfRequestSetCompletionRoutine