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, FsRtlCopyRead 및 FsRtlCopyWrite에 대한 참조 항목을 참조하세요.
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, FileSize 및 ValidDataLength 멤버에 대한 자세한 내용은 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 포함) |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기