FSRTL_COMMON_FCB_HEADER 구조체(ntifs.h)

FSRTL_ADVANCED_FCB_HEADER 구조 외부의 FSRTL_COMMON_FCB_HEADER 구조체를 사용하지 마세요. FSRTL_COMMON_FCB_HEADER 구조에는 파일 시스템이 파일, 디렉터리, 볼륨 또는 대체 데이터 스트림에 대해 유지 관리하는 컨텍스트 정보가 포함됩니다.

구문

typedef struct _FSRTL_COMMON_FCB_HEADER {
  CSHORT        NodeTypeCode;
  CSHORT        NodeByteSize;
  UCHAR         Flags;
  UCHAR         IsFastIoPossible;
  UCHAR         Flags2;
  UCHAR         Reserved : 4;
  UCHAR         Version : 4;
  PERESOURCE    Resource;
  PERESOURCE    PagingIoResource;
  LARGE_INTEGER AllocationSize;
  LARGE_INTEGER FileSize;
  LARGE_INTEGER ValidDataLength;
} FSRTL_COMMON_FCB_HEADER;

멤버

NodeTypeCode

시스템에서 사용하도록 예약되었습니다.

NodeByteSize

시스템에서 사용하도록 예약되었습니다.

Flags

다양한 기능에 대한 지원을 나타내는 플래그의 비트 마스크입니다. 이 멤버는 다음 값 중 하나 이상의 비트 OR 조합이어야 합니다.

의미
FSRTL_FLAG_FILE_MODIFIED 시스템에서 사용하도록 예약되었습니다.
FSRTL_FLAG_FILE_LENGTH_CHANGED 시스템에서 사용하도록 예약되었습니다.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES 시스템에서 사용하도록 예약되었습니다. 파일의 수정된 데이터 제한을 설정하거나 지워야 하는 파일 시스템 드라이버(필터 드라이버 제외)는 CcSetDirtyPageThreshold를 호출해야 합니다.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX 시스템에서 사용하도록 예약되었습니다.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH 시스템에서 사용하도록 예약되었습니다.
FSRTL_FLAG_USER_MAPPED_FILE 캐시 관리자는 보기가 파일에 매핑되었음을 나타내도록 이 플래그를 설정합니다.
FSRTL_FLAG_ADVANCED_HEADER 이 플래그는 파일 시스템이 FCB(파일 제어 블록) 구조에서 FSRTL_COMMON_FCB_HEADER 대신 FSRTL_ADVANCED_FCB_HEADER 사용하고 있음을 나타냅니다. 이 플래그는 FSRTL_ADVANCED_FCB_HEADER 구조 외부의 FSRTL_COMMON_FCB_HEADER 구조체 사용이 더 이상 사용되지 않으므로 필요합니다.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE 시스템에서 사용하도록 예약되었습니다.

IsFastIoPossible

이 멤버는 다음 값 중 하나여야 합니다.

의미
FastIoIsPossible 빠른 I/O가 가능합니다.
FastIoIsQuestionable 파일에 대한 전용 바이트 범위 잠금이 있습니다. 호출자는 파일 시스템의 FastIoCheckIfPossible 루틴을 호출해야 합니다.
FastIoIsNotPossible 파일에 대한 FCB가 잘못되거나 파일에 대한 기회 잠금("oplock"이라고도 함)이 있습니다.

이러한 값에 대한 자세한 내용은 FsRtlAreThereCurrentFileLocks, FsRtlCopyReadFsRtlCopyWrite에 대한 참조 항목을 참조하세요.

Flags2

파일 시스템이 다양한 기능에 대한 지원을 나타내기 위해 설정하는 플래그의 비트 마스크입니다. 이 멤버는 다음 값 중 하나 이상이어야 합니다.

의미
FSRTL_FLAG2_DO_MODIFIED_WRITE 이 표 다음에 있는 세부 정보를 참조하세요.
FSRTL_FLAG2_PURGE_WHEN_MAPPED 이 플래그를 설정하면 사용자가 파일을 처음 매핑할 때 캐시 관리자가 캐시 맵을 플러시하고 제거합니다.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS 이 플래그는 파일 시스템이 FCB 구조에서 FSRTL_COMMON_FCB_HEADER 대신 FSRTL_ADVANCED_FCB_HEADER 사용하고 있음을 나타냅니다. 이 플래그는 FSRTL_ADVANCED_FCB_HEADER 구조 외부의 FSRTL_COMMON_FCB_HEADER 구조체 사용이 더 이상 사용되지 않으므로 필요합니다.
FSRTL_FLAG2_IS_PAGING_FILE 설정된 경우 이 FCB 헤더는 페이지 파일과 연결됩니다.

FSRTL_FLAG2_DO_MODIFIED_WRITE 플래그는 다음과 같이 파일 스트림에 대한 파일 개체의 FsContext2 멤버와 함께 사용됩니다.

  • 파일 개체의 FsContext2 멤버가 NULL이 아닌 경우 파일 스트림은 파일 또는 디렉터리의 열린 instance 나타내며 이 플래그의 값은 운영 체제에서 무시됩니다.

  • 파일 개체의 FsContext2 멤버가 NULL이고 이 플래그가 설정되지 않은 경우 파일 개체는 스트림 파일 개체이고 스트림은 MNW(modified-no-write) 스트림입니다.

  • 파일 개체의 FsContext2 멤버가 NULL이고 이 플래그가 설정된 경우 파일 개체는 스트림 파일 개체이며 스트림을 쓸 수 있습니다.

Reserved

시스템에서 사용하도록 예약되었습니다. 드라이버는 이 비트 필드를 0으로 설정해야 합니다.

Version

시스템에서 사용하도록 예약되었습니다. 이 비트 필드는 FsRtlSetupAdvancedHeader 또는 FsRtlSetupAdvancedHeaderEx 매크로에 의해 설정됩니다. Windows Vista부터 이 비트 필드의 값은 FSRTL_FCB_HEADER_V1 이상입니다. 그렇지 않으면 값이 FSRTL_FCB_HEADER_V0. 자세한 내용은 FSRTL_ADVANCED_FCB_HEADER 참조하세요.

Resource

파일 시스템이 FCB에 대한 I/O 액세스를 동기화하는 데 사용할 스토리지를 제공하는 초기화된 리소스 변수에 대한 포인터입니다. 비페이지 풀에서 리소스 변수를 할당해야 합니다.

필터 드라이버는 이 멤버를 불투명으로 처리해야 합니다.

PagingIoResource

파일 시스템이 FCB에 대한 페이징 I/O 액세스를 동기화하는 데 사용할 스토리지를 제공하는 추가 리소스 변수에 대한 포인터입니다. 비페이지 풀에서 리소스 변수를 할당해야 합니다.

필터 드라이버는 이 멤버를 불투명으로 처리해야 합니다.

AllocationSize

파일 스트림의 할당 크기입니다.

AllocationSize, FileSizeValidDataLength 멤버에 대한 자세한 내용은 CcInitializeCacheMap을 참조하세요.

FileSize

파일 스트림의 파일 크기입니다.

ValidDataLength

파일 스트림의 유효한 데이터 길이입니다.

설명

파일 시스템은 모든 파일 개체의 FsContext 멤버가 FSRTL_ADVANCED_FCB_HEADER 구조를 가리키도록 설정해야 합니다. 이 구조체는 파일 시스템별 스트림 컨텍스트 개체 구조 내에 포함될 수 있습니다(이 구조체의 나머지는 파일 시스템별). 일반적으로 FSRTL_ADVANCED_FCB_HEADER 구조는 FCB(파일 제어 블록)입니다. 그러나 NTFS와 같은 여러 데이터 스트림을 지원하는 일부 파일 시스템에서는 SCB(스트림 제어 블록)입니다.

필터 관리자 및 필터 컨텍스트를 지원하려면 파일 시스템에서 스트림 컨텍스트 개체에서 FSRTL_ADVANCED_FCB_HEADER 구조를 사용해야 합니다. 모든 Microsoft 파일 시스템은 이 구조를 사용하며, 모든 타사 파일 시스템 개발자도 그렇게 해야 합니다. 볼륨 열기 요청을 포함하여 열려 있는 요청의 모든 클래스에 대한 FCB 및 SCB에는 이 구조가 포함되어야 합니다.

파일이 페이징 파일로 사용되는 경우 비페이지 풀에서 FSRTL_ADVANCED_FCB_HEADER 구조를 할당해야 합니다. 그렇지 않으면 페이징된 풀 또는 비페이지 풀에서 할당할 수 있습니다.

요구 사항

요구 사항
헤더 ntifs.h(Ntifs.h, Fltkernel.h 포함)

추가 정보

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx