WDF_REQUEST_COMPLETION_PARAMS 구조체(wdfrequest.h)
[KMDF 및 UMDF에 적용]
WDF_REQUEST_COMPLETION_PARAMS 구조에는 I/O 요청 완료와 관련된 매개 변수가 포함되어 있습니다.
구문
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;
멤버
Size
이 구조체의 크기(바이트)입니다.
Type
요청 유형을 식별하는 WDF_REQUEST_TYPE 값입니다.
IoStatus
요청에 대한 IO_STATUS_BLOCK 구조체입니다.
Parameters
요청에 대한 요청별 값입니다.
Parameters.Write
Parameters.Write.Buffer
프레임워크 메모리 개체에 대한 핸들입니다. 이 개체는 드라이버가 요청의 형식을 지정하고 I/O 대상으로 보낼 때 지정한 버퍼를 식별합니다.
Parameters.Write.Length
전송의 길이(바이트)입니다.
Parameters.Write.Offset
데이터 전송을 위한 버퍼 내의 시작 주소입니다.
Parameters.Read
Parameters.Read.Buffer
프레임워크 메모리 개체에 대한 핸들입니다. 이 개체는 드라이버가 요청의 형식을 지정하고 I/O 대상으로 보낼 때 지정한 버퍼를 식별합니다.
Parameters.Read.Length
전송의 길이(바이트)입니다.
Parameters.Read.Offset
데이터 전송을 위한 버퍼 내의 시작 주소입니다.
Parameters.Ioctl
Parameters.Ioctl.IoControlCode
Parameters.Ioctl.Input
Parameters.Ioctl.Input.Buffer
프레임워크 메모리 개체에 대한 핸들입니다. 이 개체는 드라이버가 요청 형식을 지정하고 I/O 대상으로 보낼 때 지정한 입력 버퍼를 식별합니다.
Parameters.Ioctl.Input.Offset
데이터 전송을 위한 버퍼 내의 시작 주소입니다.
Parameters.Ioctl.Output
Parameters.Ioctl.Output.Buffer
프레임워크 메모리 개체에 대한 핸들입니다. 이 개체는 드라이버가 요청 형식을 지정하고 I/O 대상으로 보낼 때 지정한 출력 버퍼를 식별합니다.
Parameters.Ioctl.Output.Offset
데이터 전송을 위한 버퍼 내의 시작 주소입니다.
Parameters.Ioctl.Output.Length
전송의 길이(바이트)입니다.
Parameters.Others
Parameters.Others.Argument1
이 멤버의 사용은 드라이버 스택에 의해 정의됩니다. 설명 부분을 참조하세요.
Parameters.Others.Argument1.Ptr
Parameters.Others.Argument1.Value
Parameters.Others.Argument2
이 멤버의 사용은 드라이버 스택에 의해 정의됩니다.
Parameters.Others.Argument2.Ptr
Parameters.Others.Argument2.Value
Parameters.Others.Argument3
이 멤버의 사용은 드라이버 스택에 의해 정의됩니다.
Parameters.Others.Argument3.Ptr
Parameters.Others.Argument3.Value
Parameters.Others.Argument4
이 멤버의 사용은 드라이버 스택에 의해 정의됩니다.
Parameters.Others.Argument4.Ptr
Parameters.Others.Argument4.Value
Parameters.Usb
USB 디바이스의 경우 이 멤버는 WDF_USB_REQUEST_COMPLETION_PARAMS 구조에 대한 포인터를 포함합니다.
Parameters.Usb.Completion
설명
WDF_REQUEST_COMPLETION_PARAMS 구조체는 WdfRequestGetCompletionParams 메서드 및 드라이버의 CompletionRoutine 콜백 함수에 대한 입력으로 사용됩니다.
두 경우 모두 완료 매개 변수 구조에는 드라이버가 WdfIoTargetFormatXxx 메서드 중 하나를 호출하여 요청 형식을 지정한 경우에만 유효한 정보가 포함됩니다. 예를 들어 WdfIoTargetFormatRequestForRead를 참조하세요.
WdfRequestGetCompletionParams를 호출하여 요청에 대한 I/O 완료 정보를 검색하기 전에 드라이버는 먼저 WDF_REQUEST_COMPLETION_PARAMS_INIT 호출하여 WDF_REQUEST_COMPLETION_PARAMS 구조를 초기화해야 합니다.
Parameters.Others.Argument 멤버는 드라이버가 일반적으로 스택을 전달하고 요청이 완료된 후 다시 도착할 수 있는 사용자 지정 인수입니다. 비표준 드라이버 스택 종속 데이터에 사용됩니다. 예를 들어 USB 드라이버는 USB 스택에 IOCTL_INTERNAL_USB_SUBMIT_URB 요청을 보낼 때 Parameters.Others.Argument1의 URB에 대한 포인터를 지정합니다. 마찬가지로 Bluetooth 드라이버는 IOCTL_INTERNAL_BTH_SUBMIT_BRB 받을 때 Parameters.Others.Argument1의 BRB(Bluetooth 요청 블록)에 대한 포인터를 지정합니다.
요구 사항
요구 사항 | 값 |
---|---|
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfrequest.h(Wdf.h 포함) |