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이 아닌 경우 파일 스트림은 파일 또는 디렉터리의 열린 인스턴스를 나타내며 이 플래그의 값은 운영 체제에서 무시됩니다.
파일 개체의 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
파일 스트림의 유효한 데이터 길이입니다.
발언
파일 시스템은 FSRTL_ADVANCED_FCB_HEADER 구조를 가리키도록 모든 파일 개체의 FsContext 멤버를 설정해야 합니다. 이 구조체는 파일 시스템별 스트림 컨텍스트 개체 구조 내에 포함될 수 있습니다(이 구조의 나머지는 파일 시스템별). 일반적으로 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
FsRtlAreThereCurrentFileLocks
FsRtlCopyRead
FsRtlCopyWrite