Fungsi WdfRequestGetStatus (wdfrequest.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfRequestGetStatus mengembalikan status permintaan I/O.

Sintaks

NTSTATUS WdfRequestGetStatus(
  [in] WDFREQUEST Request
);

Parameter

[in] Request

Handel ke objek permintaan kerangka kerja.

Nilai kembali

WdfRequestGetStatus mengembalikan nilai NTSTATUS. Untuk informasi selengkapnya tentang nilai apa yang bisa dikembalikan, lihat bagian Keterangan berikut ini.

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

Keterangan

Metode WdfRequestGetStatus mengembalikan salah satu hal berikut ini:

  • Jika panggilan driver ke WdfRequestSend berhasil, WdfRequestGetStatus mengembalikan nilai status yang ditetapkan oleh driver yang memanggil WdfRequestComplete untuk menyelesaikan permintaan yang ditentukan. Driver biasanya memanggil WdfRequestGetStatus dari dalam fungsi panggilan balik CompletionRoutine .
  • Jika panggilan driver ke WdfRequestSend gagal, WdfRequestGetStatus mengembalikan nilai status yang telah ditetapkan kerangka kerja untuk menjelaskan kegagalan. Driver dapat memanggil WdfRequestGetStatus segera setelah memanggil WdfRequestSend.
Jika driver mengatur bendera WDF_REQUEST_SEND_OPTION_SYNCHRONOUS untuk permintaan saat memanggil WdfRequestSend, driver dapat memanggil WdfRequestGetStatus segera setelah memanggil WdfRequestSend, apakah panggilan ke WdfRequestSend berhasil atau gagal.

Untuk informasi selengkapnya tentang penyelesaian permintaan, lihat Menyelesaikan Permintaan I/O.

Contoh

Contoh kode berikut berasal dari driver sampel KbFiltr . Contoh ini mengirimkan permintaan I/O ke target I/O. Jika WdfRequestSend gagal, contohnya menggunakan nilai pengembalian WdfRequestGetStatus sebagai input ke WdfRequestComplete.

VOID
KbFilter_ForwardRequest(
    IN WDFREQUEST Request,
    IN WDFIOTARGET Target
    )
{
    WDF_REQUEST_SEND_OPTIONS options;
    BOOLEAN ret;
    NTSTATUS status;

    WDF_REQUEST_SEND_OPTIONS_INIT(
                                  &options,
                                  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
                                  );

    ret = WdfRequestSend(
                         Request,
                         Target,
                         &options
                         );

    if (ret == FALSE) {
        status = WdfRequestGetStatus (Request);
        DebugPrint(("WdfRequestSend failed: 0x%x\n", status));
        WdfRequestComplete(
                           Request,
                           status
                           );
    }
    return;
}

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), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestGetStatusValid(kmdf)

Lihat juga

CompletionRoutine

WdfRequestComplete

WdfRequestSend