WdfRequestReuse 함수(wdfrequest.h)

[KMDF 및 UMDF에 적용]

WdfRequestReuse 메서드는 프레임워크 요청 개체를 다시 초기화하여 다시 사용할 수 있도록 합니다.

구문

NTSTATUS WdfRequestReuse(
  [in] WDFREQUEST                Request,
  [in] PWDF_REQUEST_REUSE_PARAMS ReuseParams
);

매개 변수

[in] Request

프레임워크 요청 개체에 대한 핸들입니다.

[in] ReuseParams

호출자가 할당한 WDF_REQUEST_REUSE_PARAMS 구조체에 대한 포인터입니다.

반환 값

WdfRequestReuse 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 메서드는 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
입력 매개 변수가 잘못되었습니다.
STATUS_WDF_REQUEST_INVALID_STATE
드라이버는 WDF_REQUEST_REUSE_PARAMS 구조에 IRP를 제공했지만 WdfRequestCreateFromIrp에서 지정된 요청 개체를 가져오지 못했습니다.
 

드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.

설명

프레임워크 기반 드라이버는 WdfRequestCreate 또는 WdfRequestCreateFromIrp에 대한 이전 호출로 만든 프레임워크 요청 개체를 다시 사용할 수 있습니다. 드라이버는 프레임워크에서 받은 요청 개체를 다시 사용할 수도 있지만 해당 요청 개체에 대한 WDF_REQUEST_REUSE_SET_NEW_IRP 플래그를 설정할 수는 없습니다.

참고

드라이버는 프레임워크에서 받은 요청 개체를 다시 사용할 때 주의해야 합니다. 이러한 요청을 다시 사용하면 기본 IRP의 취소 플래그가 다시 설정되고 호출 드라이버가 요청을 취소하지 못할 수 있습니다.

드라이버는 원래 요청이 완료된 후 요청 개체를 다시 사용할 수 있습니다. 드라이버가 WdfRequestReuse를 호출한 후 요청의 콘텐츠를 다시 초기화해야 합니다. 드라이버는 WDF_REQUEST_REUSE_PARAMS 구조에서 일부 요청 매개 변수를 지정할 수 있습니다.

재사용된 요청에 CompletionRoutine 콜백 함수가 있어야 하는 경우 드라이버는 WdfRequestRequestReuse를 호출한 후 WdfRequestSetCompletionRoutine을 호출해야 합니다.

WdfRequestReuse에 대한 자세한 내용은 프레임워크 요청 개체 재사용을 참조하세요.

예제

다음 코드 예제는 드라이버가 드라이버 할당 요청을 다시 사용할 수 있도록 WdfRequestReuse를 호출하는 CompletionRoutine 콜백 함수의 일부입니다.

VOID
MyRequestCompletionRoutine(
    IN WDFREQUEST  Request,
    IN WDFIOTARGET  Target,
    PWDF_REQUEST_COMPLETION_PARAMS  CompletionParams,
    IN WDFCONTEXT  Context
    )
{
    WDF_REQUEST_REUSE_PARAMS  params;
    NTSTATUS  status;
...
    WDF_REQUEST_REUSE_PARAMS_INIT(
                                  &params,
                                  WDF_REQUEST_REUSE_NO_FLAGS,
                                  STATUS_SUCCESS
                                  );

    status = WdfRequestReuse(
                             Request,
                             &params
                             );
    ASSERT(NT_SUCCESS(status));
...
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfrequest.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <=DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf)

추가 정보

CompletionRoutine

WDF_REQUEST_REUSE_PARAMS

WDF_REQUEST_REUSE_PARAMS_INIT

WdfRequestCreate

WdfRequestCreateFromIrp

WdfRequestSetCompletionRoutine