다음을 통해 공유


MmAllocateNonCachedMemory 함수(ntddk.h)

MmAllocateNonCachedMemory 루틴은 캐시되지 않은 메모리와 캐시 정렬된 메모리의 가상 주소 범위를 할당합니다.

구문

PVOID MmAllocateNonCachedMemory(
  [in] SIZE_T NumberOfBytes
);

매개 변수

[in] NumberOfBytes

할당할 범위의 크기(바이트)를 지정합니다.

반환 값

요청된 메모리를 할당할 수 없는 경우 반환 값은 NULL입니다. 그렇지 않으면 할당된 범위의 기본 가상 주소입니다.

설명

다양한 디바이스별 버퍼에 대해 캐시되지 않은 가상 메모리 블록을 할당하기 위해 DriverEntry 루틴에서 MmAllocateNonCachedMemory를 호출할 수 있습니다. 함수는 요청된 할당 크기에 관계없이 항상 가상 메모리 페이지 크기의 전체 배수인 비페이지 시스템 주소 공간 메모리를 반환합니다.

캐시되지 않은 할당은 캐시 및 일관성 문제를 방지하기 위해 프로세서의 데이터 캐시 라인 크기의 정수 배수에 맞춰집니다.

MmAllocateNonCachedMemory가 반환하는 실제 메모리 페이지는 일반적으로 연속 페이지가 아닙니다.

MmAllocateNonCachedMemory가 할당하는 메모리는 초기화되지 않습니다. 커널 모드 드라이버는 사용자 모드 소프트웨어에 표시하려면 먼저 이 메모리를 0으로 설정해야 합니다(잠재적으로 권한 있는 콘텐츠가 누출되지 않도록 방지).

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <=APC_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IrqlMmApcLte(wdm), SpNoWait(storport), StorPortStartIo(storport)

추가 정보

AllocateCommonBuffer

KeGetDcacheFillSize

MmAllocateContiguousMemory

MmAllocateContiguousMemorySpecifyCache

MmFreeNonCachedMemory