Fungsi WdfRequestCompleteWithPriorityBoost (wdfrequest.h)

[Hanya berlaku untuk KMDF]

Metode WdfRequestCompleteWithPriorityBoost menyelesaikan permintaan I/O tertentu dan menyediakan status penyelesaian. Ini juga menentukan nilai yang dapat digunakan sistem untuk meningkatkan prioritas run-time utas yang meminta operasi I/O.

Sintaks

void WdfRequestCompleteWithPriorityBoost(
  [in] WDFREQUEST Request,
  [in] NTSTATUS   Status,
  [in] CCHAR      PriorityBoost
);

Parameter

[in] Request

Handel ke objek permintaan kerangka kerja yang mewakili permintaan I/O yang sedang diselesaikan.

[in] Status

Nilai NTSTATUS yang mewakili status penyelesaian permintaan. Nilai status yang valid termasuk, tetapi tidak terbatas pada, berikut ini:

STATUS_SUCCESS

Driver berhasil menyelesaikan permintaan.

STATUS_CANCELLED

Driver membatalkan permintaan.

STATUS_UNSUCCESSFUL

Driver mengalami kesalahan saat memproses permintaan.

[in] PriorityBoost

Nilai konstanta yang ditentukan sistem untuk menaikkan prioritas run-time dari utas asli yang meminta operasi. Nilai konstanta spesifik jenis perangkat dan didefinisikan dalam Wdm.h. Format untuk nama konstanta adalah XXX_INCREMENT. Untuk informasi selengkapnya tentang nilai peningkatan prioritas, lihat Menentukan Peningkatan Prioritas Saat Menyelesaikan Permintaan I/O.

Nilai kembali

Tidak ada

Keterangan

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

Driver Anda harus memanggil WdfRequestCompleteWithPriorityBoost jika Anda ingin mengganti peningkatan prioritas default yang disediakan kerangka kerja. Misalnya, driver mungkin mengatur peningkatan prioritas ke IO_NO_INCREMENT jika dapat menyelesaikan permintaan dengan cepat, mungkin karena mendeteksi kesalahan.

Setelah panggilan ke WdfRequestCompleteWithPriorityBoost kembali, handel permintaan tidak lagi valid kecuali driver telah memanggil WdfObjectReference untuk menambahkan satu atau beberapa jumlah referensi tambahan ke objek permintaan. Perhatikan bahwa setelah WdfRequestCompleteWithPriorityBoost kembali, driver tidak boleh mencoba mengakses struktur IRP WDM terkait, bahkan jika telah disebut WdfObjectReference.

Untuk informasi selengkapnya tentang memanggil WdfRequestCompleteWithPriorityBoost, lihat Menyelesaikan Permintaan I/O.

Contoh

Contoh kode berikut menunjukkan bagaimana contoh di WdfRequestComplete dapat menggunakan WdfRequestCompleteWithPriorityBoost alih-alih WdfRequestComplete.

switch (params.Type) {
    case WdfRequestTypeRead:
        length = params.Parameters.Read.Length;
        direction = WdfDmaDirectionReadFromDevice;
        break;
    case WdfRequestTypeWrite:
        length = params.Parameters.Write.Length;
        direction = WdfDmaDirectionWriteToDevice;
        break;
    default:
        WdfRequestCompleteWithPriorityBoost(
                                            Request,
                                            STATUS_INVALID_PARAMETER,
                                            IO_NO_INCREMENT
                                            );
        return;
    }

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfrequest.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <=DISPATCH_LEVEL
Aturan kepatuhan DDI BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), CompleteCanceledReq(kmdf), DeferredRequestCompleted(kmdf), DoubleCompletion(kmdf), DoubleCompletionLocal(kmdf), DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), EvtSurpriseRemoveNoRequestComplete(kmdf), InvalidReqAccess(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MarkCancOnCancReqLocal(kmdf), MdlAfterReqCompletedIntIoctl(kmdf), MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctl(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedRead(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWrite(kmdf), MdlAfterReqCompletedWriteA(kmdf), MemAfterReqCompletedIntIoctl(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctl(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedRead(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWrite(kmdf), MemAfterReqCompletedWriteA(kmdf), NoCancelFromEvtSurpriseRemove(kmdf), ReqDelete(kmdf), ReqIsCancOnCancReq(kmdf), ReqNotCanceledLocal(kmdf), ReqSendFail(kmdf), RequestCompleted(kmdf), RequestCompletedLocal(kmdf)

Lihat juga

WdfObjectReference

WdfRequestComplete

WdfRequestCompleteWithInformation