다음을 통해 공유


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_BUFFER_SIZE
DestinationOffset 매개 변수가 지정한 바이트 오프셋이 너무 큽니다.
STATUS_BUFFER_TOO_SMALL
대상 오프셋부터 DestinationOffset 매개 변수가 지정한 대상 버퍼의 크기가 NumBytesToCopyFrom 매개 변수보다 큽니다.
 

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

드라이버에서 잘못된 개체 핸들을 제공하면 버그 검사가 수행됩니다.

비고

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

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

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