CcPinMappedData 함수(ntifs.h)
CcPinMappedData 루틴은 캐시된 파일의 지정된 바이트 범위를 고정합니다.
통사론
BOOLEAN CcPinMappedData(
[in] PFILE_OBJECT FileObject,
[in] PLARGE_INTEGER FileOffset,
[in] ULONG Length,
[in] ULONG Flags,
[in, out] PVOID *Bcb
);
매개 변수
[in] FileObject
데이터 범위를 고정할 캐시된 파일의 파일 개체에 대한 포인터입니다.
[in] FileOffset
원하는 데이터가 있는 캐시된 파일 내에서 시작 바이트 오프셋을 지정하는 변수에 대한 포인터입니다.
[in] Length
고정할 데이터의 길이(바이트)입니다.
[in] Flags
고정 작업을 수행하는 방법을 지정하는 플래그의 비트 마스크입니다. 다음 값 중 하나 이상의 ORed 조합:
기 | 의미 |
---|---|
PIN_WAIT | 데이터가 고정될 때까지 호출자를 대기 상태로 전환할 수 있습니다. |
PIN_EXCLUSIVE | 버퍼 제어 블록(BCB)은 단독으로 획득해야 합니다. 이 플래그가 설정되면 PIN_WAIT 설정해야 합니다. |
PIN_NO_READ | 메모리에 이미 상주하는 페이지만 고정해야 합니다. 이 플래그가 설정되면 PIN_WAIT 설정해야 합니다. |
PIN_IF_BCB |
BCB가 이미 있는 경우에만 데이터를 고정해야 합니다. 그렇지 않으면 핀이 실패하고 bcb |
[in, out] Bcb
첫 번째 호출에서 BCB(버퍼 제어 블록)에 대한 포인터를 반환합니다. 이 포인터는 이 버퍼에 대한 모든 후속 호출에 대한 입력으로 제공되어야 합니다.
반환 값
발언
CcPinMappedData 성공적으로 반환하면 이전에 CcMapData 호출에서 매핑된 데이터가 캐시에 고정되고 지정된 범위의 데이터를 안전하게 수정할 수 있습니다. 이후에 호출자가 CcPinMappedData고정된 데이터를 수정하는 경우 수정된 데이터가 결국 디스크에 기록되도록 CcSetDirtyPinnedData 호출해야 합니다.
CcPinMappedData 캐시 관리자의 뷰 경계를 넘어 데이터를 고정할 수 없습니다. 캐시 관리자는 256KB로 정렬된 보기로 시스템의 파일을 관리합니다. (캐시 관리자의 뷰 크기는 ntifs.h
캐시된 파일에 바이트 범위를 고정해도 페이지가 메모리에 남아 있는 것은 아닙니다. 페이지가 고정되어 있는 한 바이트 범위는 시스템 캐시 가상 주소 공간에 매핑된 상태를 유지하지만 메모리 관리자는 시스템의 메모리 요구 사항에 따라 실제 페이지를 페이징할 수 있습니다.
오류가 발생하면 ccPinMappedData
캐시된 파일에 대한 데이터를 매핑하려면 CcMapData 루틴을 사용합니다. 파일을 캐시하려면 CcInitializeCacheMap사용합니다.
핀 참조가 CcMapData일치하기 때문에 CcPinMappedData 호출한 후에는 CcUnpinData 호출할 필요가 없습니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
PASSIVE_LEVEL |
참고 항목
ccInitializeCacheMap
CcMapData
CcPinRead
CcPreparePinWrite
CcUnpinData