다음을 통해 공유


WdfMemoryCopyFromBuffer 함수(wdfmemory.h)

[KMDF 및 UMDF에 적용]

WdfMemoryCopyFromBuffer 메서드는 지정된 원본 버퍼의 내용을 지정된 메모리 개체의 버퍼에 복사합니다.

구문

NTSTATUS WdfMemoryCopyFromBuffer(
  [in] WDFMEMORY DestinationMemory,
  [in] size_t    DestinationOffset,
  [in] PVOID     Buffer,
  [in] size_t    NumBytesToCopyFrom
);

매개 변수

[in] DestinationMemory

대상 버퍼를 나타내는 프레임워크 메모리 개체에 대한 핸들입니다.

[in] DestinationOffset

대상 버퍼의 시작부터 오프셋(바이트)입니다. 복사 작업은 대상 버퍼의 지정된 오프셋에서 시작됩니다.

[in] Buffer

원본 버퍼에 대한 포인터입니다.

[in] NumBytesToCopyFrom

원본 버퍼에서 대상 버퍼로 복사할 바이트 수입니다. 이 값은 원본 버퍼의 크기보다 크지 않아야 합니다.

반환 값

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

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 감지되었습니다.
STATUS_INVALID_BUFFER_SIZE
DestinationOffset 매개 변수가 지정한 바이트 오프셋이 너무 큽니다.
STATUS_BUFFER_TOO_SMALL
대상 오프셋에서 시작하여 DestinationOffset 매개 변수가 지정한 대상 버퍼의 크기가 NumBytesToCopyFrom 매개 변수보다 큽니다.
 

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

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

설명

프레임워크는 대상 버퍼가 NumBytesToCopyFrom 매개 변수가 지정하는 데이터의 양을 받을 수 있을 만큼 충분히 큰지 확인합니다.

프레임워크 메모리 개체에 대한 자세한 내용은 메모리 버퍼 사용을 참조하세요.

페이지 가능한 메모리 풀에서 원본 또는 대상 버퍼를 할당한 경우 IRQL <= APC_LEVEL WdfMemoryCopyFromBuffer 메서드를 호출해야 합니다. 그렇지 않으면 모든 IRQL에서 메서드를 호출할 수 있습니다.

예제

다음 코드 예제에서는 I/O 요청의 출력 버퍼를 나타내는 프레임워크 메모리 개체에 대한 핸들을 가져온 다음 다른 버퍼의 내용을 I/O 요청의 출력 버퍼에 복사합니다.

WDFMEMORY  memoryBuffer;
NTSTATUS  status;

status = WdfRequestRetrieveOutputMemory(
                                        Request,
                                        &memoryBuffer
                                        );
if (!NT_SUCCESS(status)) {
    goto Error;
}
status = WdfMemoryCopyFromBuffer(
                                 memoryBuffer,
                                 0,
                                 deviceContext->Buffer,
                                 Length
                                 );
if (!NT_SUCCESS(status)) {
    goto Error;
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfmemory.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL 모든 수준(설명 섹션 참조)
DDI 규정 준수 규칙 BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf)

추가 정보

WdfMemoryCopyToBuffer

WdfRequestRetrieveOutputMemory