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 포함)

추가 정보

CompletionRoutine

IO_STATUS_BLOCK

WDF_REQUEST_COMPLETION_PARAMS_INIT

WDF_REQUEST_TYPE

WdfRequestGetCompletionParams