WdfMemoryAssignBuffer 함수(wdfmemory.h)

[KMDF 및 UMDF에 적용]

WdfMemoryAssignBuffer 메서드는 WdfMemoryCreatePreallocated를 호출하여 드라이버가 만든 메모리 개체에 지정된 버퍼를 할당합니다.

구문

NTSTATUS WdfMemoryAssignBuffer(
  [in] WDFMEMORY Memory,
  [in] PVOID     Buffer,
  [in] size_t    BufferSize
);

매개 변수

[in] Memory

WdfMemoryCreatePreallocated를 호출하여 가져온 프레임워크 메모리 개체에 대한 핸들입니다.

[in] Buffer

드라이버 제공 버퍼에 대한 포인터입니다.

[in] BufferSize

버퍼가 가리키는 버퍼의 0이 아닌 크기(바이트)입니다.

반환 값

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

반환 코드 설명
STATUS_INVALID_PARAMETER
잘못된 매개 변수가 감지되었습니다.
 

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

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

설명

메서드는 WdfMemoryCreatePreallocated 가 만든 메모리 개체에 버퍼를 할당할 수 있지만 WdfMemoryCreate 가 만든 메모리 개체에는 할당할 수 없습니다.

Buffer 매개 변수가 가리키는 버퍼는 페이징 가능 또는 페이징할 수 없는 메모리 풀에서 할당할 수 있습니다. 드라이버가 페이저블 풀에서 버퍼를 할당하거나 사용자 모드 애플리케이션에서 제공되었기 때문에 버퍼가 페이저블 풀에 있는 경우 드라이버는 IRQL < DISPATCH_LEVEL 버퍼에만 액세스해야 합니다. (드라이버의 EvtCleanupCallbackEvtDestroyCallback 콜백 함수가 제공된 경우 IRQL <= DISPATCH_LEVEL 호출할 수 있습니다.)

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

예제

다음 코드 예제에서는 버퍼를 할당한 다음 프레임워크 메모리 개체에 버퍼를 할당합니다.

PVOID  pNewBuffer = NULL;

pNewBuffer = ExAllocatePoolWithTag(
                                   NonPagedPool,
                                   NEW_BUFFER_SIZE,
                                   MY_DRIVER_TAG
                                   );
if (pNewBuffer == NULL){
    goto Error;
}

status = WdfMemoryAssignBuffer(
                               memHandle,
                               pNewBuffer,
                               NEW_BUFFER_SIZE
                               );

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 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)

추가 정보

ExAllocatePoolWithTag

WdfMemoryCreatePreallocated