WdfRequestRetrieveUnsafeUserInputBuffer 함수(wdfrequest.h)

[KMDF에만 적용]

WdfRequestRetrieveUnsafeUserInputBuffer 메서드는 데이터 버퍼에 액세스하기 위한 요청의 기술이 버퍼링되거나 직접 I/O가 아닌 경우 I/O 요청의 입력 버퍼를 검색합니다.

구문

NTSTATUS WdfRequestRetrieveUnsafeUserInputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *InputBuffer,
  [out, optional] size_t     *Length
);

매개 변수

[in] Request

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

[in] MinimumRequiredLength

드라이버가 I/O 요청을 처리하는 데 필요한 최소 버퍼 크기(바이트)입니다.

[out] InputBuffer

버퍼의 주소를 받는 위치에 대한 포인터입니다.

[out, optional] Length

버퍼의 크기를 수신하는 위치에 대한 포인터(바이트)입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

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

반환 코드 설명
STATUS_INVALID_PARAMETER
입력 매개 변수가 잘못되었습니다.
STATUS_INVALID_DEVICE_REQUEST
다음 중 하나가 발생하면 이 값이 반환됩니다.
STATUS_BUFFER_TOO_SMALL
MinimumRequiredLength 매개 변수는 버퍼의 실제 크기보다 큰 버퍼 크기를 지정합니다.
 

이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.

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

설명

EvtIoInCallerContext 콜백 함수에서 WdfRequestRetrieveUnsafeUserInputBuffer 메서드를 호출해야 합니다. WdfRequestRetrieveUnsafeUserInputBuffer를 호출한 후 드라이버는 WdfRequestProbeAndLockUserBufferForRead를 호출해야 합니다.

요청의 I/O 제어 코드가 IRP_MJ_WRITE 또는IRP_MJ_DEVICE_CONTROL 경우 드라이버는 WdfRequestRetrieveUnsafeUserInputBuffer를 호출할 수 있습니다.

드라이버는 Request 매개 변수가 나타내는 I/O 요청을 완료할 때까지 검색된 버퍼에 액세스할 수 있습니다.

WdfRequestRetrieveUnsafeUserInputBuffer에 대한 자세한 내용은 Framework-Based 드라이버에서 데이터 버퍼 액세스를 참조하세요.

예제

WdfRequestRetrieveUnsafeUserInputBuffer를 사용하는 코드 예제는 WdfRequestProbeAndLockUserBufferForRead를 참조하세요.

요구 사항

요구 사항 값
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
머리글 wdfrequest.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(프레임워크 라이브러리 버전 관리 참조)
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), InputBufferAPI(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer