struktur WDF_REQUEST_COMPLETION_PARAMS (wdfrequest.h)
[Berlaku untuk KMDF dan UMDF]
Struktur WDF_REQUEST_COMPLETION_PARAMS berisi parameter yang terkait dengan penyelesaian permintaan I/O.
Sintaks
typedef struct _WDF_REQUEST_COMPLETION_PARAMS {
ULONG Size;
WDF_REQUEST_TYPE Type;
IO_STATUS_BLOCK IoStatus;
union {
struct {
WDFMEMORY Buffer;
size_t Length;
size_t Offset;
} Write;
struct {
WDFMEMORY Buffer;
size_t Length;
size_t Offset;
} Read;
struct {
ULONG IoControlCode;
struct {
WDFMEMORY Buffer;
size_t Offset;
} Input;
struct {
WDFMEMORY Buffer;
size_t Offset;
size_t Length;
} Output;
} Ioctl;
struct {
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument1;
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument2;
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument3;
union {
PVOID Ptr;
ULONG_PTR Value;
} Argument4;
} Others;
struct {
PWDF_USB_REQUEST_COMPLETION_PARAMS Completion;
} Usb;
} Parameters;
} WDF_REQUEST_COMPLETION_PARAMS, *PWDF_REQUEST_COMPLETION_PARAMS;
Anggota
Size
Ukuran, dalam byte, dari struktur ini.
Type
Nilai WDF_REQUEST_TYPE yang mengidentifikasi jenis permintaan.
IoStatus
Struktur IO_STATUS_BLOCK untuk permintaan.
Parameters
Nilai khusus permintaan untuk permintaan tersebut.
Parameters.Write
Parameters.Write.Buffer
Handel ke objek memori kerangka kerja. Objek ini mengidentifikasi buffer yang ditentukan driver ketika memformat permintaan dan mengirimkannya ke target I/O.
Parameters.Write.Length
Panjang, dalam byte, transfer.
Parameters.Write.Offset
Alamat awal dalam buffer untuk transfer data.
Parameters.Read
Parameters.Read.Buffer
Handel ke objek memori kerangka kerja. Objek ini mengidentifikasi buffer yang ditentukan driver ketika memformat permintaan dan mengirimkannya ke target I/O.
Parameters.Read.Length
Panjang, dalam byte, transfer.
Parameters.Read.Offset
Alamat awal dalam buffer untuk transfer data.
Parameters.Ioctl
Parameters.Ioctl.IoControlCode
Parameters.Ioctl.Input
Parameters.Ioctl.Input.Buffer
Handel ke objek memori kerangka kerja. Objek ini mengidentifikasi buffer input yang ditentukan driver saat memformat permintaan dan mengirimkannya ke target I/O.
Parameters.Ioctl.Input.Offset
Alamat awal dalam buffer untuk transfer data.
Parameters.Ioctl.Output
Parameters.Ioctl.Output.Buffer
Handel ke objek memori kerangka kerja. Objek ini mengidentifikasi buffer output yang ditentukan driver saat memformat permintaan dan mengirimkannya ke target I/O.
Parameters.Ioctl.Output.Offset
Alamat awal dalam buffer untuk transfer data.
Parameters.Ioctl.Output.Length
Panjang, dalam byte, transfer.
Parameters.Others
Parameters.Others.Argument1
Penggunaan anggota ini ditentukan oleh tumpukan driver. Lihat Keterangan.
Parameters.Others.Argument1.Ptr
Parameters.Others.Argument1.Value
Parameters.Others.Argument2
Penggunaan anggota ini ditentukan oleh tumpukan driver.
Parameters.Others.Argument2.Ptr
Parameters.Others.Argument2.Value
Parameters.Others.Argument3
Penggunaan anggota ini ditentukan oleh tumpukan driver.
Parameters.Others.Argument3.Ptr
Parameters.Others.Argument3.Value
Parameters.Others.Argument4
Penggunaan anggota ini ditentukan oleh tumpukan driver.
Parameters.Others.Argument4.Ptr
Parameters.Others.Argument4.Value
Parameters.Usb
Untuk perangkat USB, anggota ini berisi pointer ke struktur WDF_USB_REQUEST_COMPLETION_PARAMS .
Parameters.Usb.Completion
Keterangan
Struktur WDF_REQUEST_COMPLETION_PARAMS digunakan sebagai input ke metode WdfRequestGetCompletionParams dan fungsi panggilan balik CompletionRoutine driver.
Dalam kedua kasus, struktur parameter penyelesaian berisi informasi yang valid hanya jika driver telah memformat permintaan dengan memanggil salah satu metode WdfIoTargetFormatXxx . Misalnya, lihat WdfIoTargetFormatRequestForRead.
Sebelum memanggil WdfRequestGetCompletionParams untuk mengambil informasi penyelesaian I/O untuk permintaan, driver harus terlebih dahulu memanggil WDF_REQUEST_COMPLETION_PARAMS_INIT untuk menginisialisasi struktur WDF_REQUEST_COMPLETION_PARAMS .
Anggota Parameters.Others.Argument adalah argumen kustom yang biasanya diteruskan driver ke tumpukan (dan dapat tiba kembali setelah permintaan selesai). Mereka digunakan untuk data dependen tumpukan driver non-standar. Misalnya, driver USB menentukan pointer ke URB di Parameters.Others.Argument1 saat mengirim permintaan IOCTL_INTERNAL_USB_SUBMIT_URB ke tumpukan USB. Demikian pula, driver Bluetooth menentukan penunjuk ke BRB (Blok Permintaan Bluetooth) di Parameters.Others.Argument1 saat menerima IOCTL_INTERNAL_BTH_SUBMIT_BRB.
Persyaratan
Persyaratan | Nilai |
---|---|
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfrequest.h (termasuk Wdf.h) |