FSRTL_ADVANCED_FCB_HEADER 구조체(ntifs.h)
FSRTL_ADVANCED_FCB_HEADER 구조에는 파일 시스템에서 파일에 대해 유지 관리하는 컨텍스트 정보가 포함됩니다.
구문
typedef struct _FSRTL_ADVANCED_FCB_HEADER {
FSRTL_COMMON_FCB_HEADER DUMMYSTRUCTNAME;
PFAST_MUTEX FastMutex;
LIST_ENTRY FilterContexts;
EX_PUSH_LOCK PushLock;
PVOID *FileContextSupportPointer;
union {
OPLOCK Oplock;
PVOID ReservedForRemote;
};
PVOID AePushLock;
PVOID ReservedContext;
ULONG BypassIoOpenCount;
} FSRTL_ADVANCED_FCB_HEADER;
멤버
DUMMYSTRUCTNAME
FastMutex
DUMMYSTRUCTNAME 의 다음 멤버에 대한 액세스를 동기화하는 데 사용되는 초기화된 빠른 뮤텍스에 대한 포인터입니다.
- AllocationSize
- FileSize
- ValidDataLength
있는 경우 PushLock 멤버는 FilterContexts 멤버에 대한 액세스를 동기화하는 데 사용됩니다. 그렇지 않으면 FastMutex 가 사용됩니다.
FilterContexts
파일과 연결된 모든 컨텍스트 구조 목록의 헤드에 대한 포인터입니다. 필터 드라이버는 FsRtlLookupPerStreamContext 를 호출하여 이 목록을 검색하고 FsRtlInsertPerStreamContext 및 FsRtlRemovePerStreamContext를 호출하여 수정할 수 있습니다.
PushLock
FilterContexts 목록에 대한 액세스를 동기화하는 데 사용되는 푸시 잠금입니다. 이 필드는 Windows Vista(즉, FSRTL_COMMON_FCB_HEADER 구조의 버전 비트 필드가 FSRTL_FCB_HEADER_V1보다 크거나 같은 경우)부터 만 사용할 수 있습니다.
FileContextSupportPointer
파일 컨텍스트를 추적하기 위해 FSRTL(파일 시스템 런타임 라이브러리)에서 사용하는 포인터 필드에 대한 포인터입니다. NULL 이 아닌 경우 이 멤버는 구조를 만든 파일 시스템에 대한 파일별 구조 내의 PVOID 변수에 대한 포인터여야 합니다. NULL 인 경우 파일 컨텍스트는 지원되지 않습니다. 이 멤버는 Windows Vista(즉, FSRTL_COMMON_FCB_HEADER 구조체의 버전 비트 필드가 FSRTL_FCB_HEADER_V1보다 크거나 같은 경우)부터 만 사용할 수 있습니다.
Oplock
파일 또는 디렉터리에 대한 oplock입니다. 이 필드는 Windows 8(즉, FSRTL_COMMON_FCB_HEADER 구조체의 버전 비트 필드가 FSRTL_FCB_HEADER_V2보다 크거나 같은 경우)부터 만 사용할 수 있습니다.
ReservedForRemote
파일 시스템이 원격인 경우 이 필드는 예약되어 있습니다. Windows 8(즉, FSRTL_COMMON_FCB_HEADER 구조체의 버전 비트 필드가 FSRTL_FCB_HEADER_V2보다 크거나 같은 경우)부터 만 사용할 수 있습니다.
AePushLock
PushLock 대신 스트림 컨텍스트 목록에 대한 액세스를 동기화하는 데 사용되는 자동 확장 푸시 잠금입니다. 자세한 내용은 설명 을 참조하세요.
AePushlock 은 Windows 10 버전 20H2(즉, FSRTL_COMMON_FCB_HEADER 구조의 버전 비트 필드가 FSRTL_FCB_HEADER_V3 이상인 경우)부터 사용할 수 있으며 FsRtlSetupAdvancedHeaderEx2를 호출하여 초기화해야 합니다.
ReservedContext
이 필드는 시스템 사용을 위해 예약되어 있습니다. Windows 10 버전 1803을 통해 Windows 8.1만 사용됩니다(FSRTL_COMMON_FCB_HEADER 구조의 버전 비트 필드가 FSRTL_FCB_HEADER_V3 보다 크거나 같은 경우).
BypassIoOpenCount
이 스트림에서 BypassIO 를 사용하도록 설정하여 현재 열려 있는 핸들 수를 추적합니다.
이 필드는 Windows 11(즉, FSRTL_COMMON_FCB_HEADER 구조체의 버전 비트 필드가 FSRTL_FCB_HEADER_V4 이상인 경우)부터 사용할 수 있습니다.
설명
FSRTL_ADVANCED_FCB_HEADER 구조체는 FSRTL_COMMON_FCB_HEADER 구조체의 상위 집합입니다. 파일 시스템(해당하는 경우 레거시 필터 및 미니 필터 드라이버 포함)은 FSRTL_ADVANCED_FCB_HEADER 구조를 사용해야 합니다.
파일 시스템은 다음 매크로 중 하나를 사용하여 FSRTL_ADVANCED_FCB_HEADER 구조를 초기화해야 합니다.
- FsRtlSetupAdvancedHeader
- FsRtlSetupAdvancedHeaderEx
- FsRtlSetupAdvancedHeaderEx2, Windows 10 버전 20H2부터 사용할 수 있습니다.
다음 플래그는 이러한 매크로에 의해 설정됩니다.
| 플래그 | 의미 |
|---|---|
| FSRTL_FLAG_ADVANCED_HEADER | FSRTL_COMMON_FCB_HEADER 구조체의 Flags 멤버에 설정된 이 플래그는 FSRTL_ADVANCED_FCB_HEADER 구조체에 대한 파일 시스템 드라이버 지원을 나타냅니다. 이 플래그는 수정하면 안 됩니다. |
| FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS | FSRTL_COMMON_FCB_HEADER Flags2 멤버에 설정된 이 플래그는 필터 드라이버 컨텍스트에 대한 지원을 나타냅니다. 페이징 파일에 대해서만 이 플래그를 지울 수 있습니다(테이블 뒤의 정보 참조). |
파일 시스템은 모든 파일 개체의 FsContext 멤버가 FSRTL_ADVANCED_FCB_HEADER 구조를 가리키도록 설정해야 합니다. 이 구조체는 파일 시스템 스트림과 관련된 컨텍스트 개체 구조 내에 포함될 수 있습니다(구조의 나머지는 파일 시스템별). 일반적으로 이 구조는 FCB(파일 제어 블록)입니다. 그러나 NTFS와 같은 여러 데이터 스트림을 지원하는 일부 파일 시스템에서는 SCB(스트림 제어 블록)입니다. 볼륨 열기 요청을 포함하여 열려 있는 요청의 모든 클래스에 대한 FCB 및 SCB는 이 구조를 포함해야 합니다.
파일이 페이징 파일인 경우 페이징되지 않은 풀에서 FSRTL_ADVANCED_FCB_HEADER 구조체를 할당해야 합니다. 그렇지 않으면 페이징된 풀 또는 비페이지 풀에서 할당할 수 있습니다.
모든 Microsoft 파일 시스템은 FsRtlSetupAdvancedHeader를 호출한 후 FSRTL_COMMON_FCB_HEADER Flags2 멤버에서 FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS 플래그를 지워 페이징 파일에 대한 스트림 컨텍스트 지원을 사용하지 않도록 설정합니다. FASTFAT WDK 샘플은 Strucsup.c 의 FatCreateFcb 함수를 참조하세요. 모든 파일 시스템에서 운영 체제가 일관된 방식으로 작동하도록 파일 시스템 또는 시스템에서 동일한 작업을 수행하는 것이 좋습니다.
푸시 잠금 자동 확장
자동 확장 푸시 잠금은 Windows 10 버전 20H2에 도입되었습니다. 필터 관리자의 잠금이 원래 설계되었을 때 대형 다중 프로세서 시스템은 매우 드물고 RAM은 소중했습니다. 이러한 시스템이 일반화되고 RAM이 제한되지 않으므로 자동 확장 푸시 잠금은 메모리 소비와 속도 간에 유익한 절차를 제공합니다.
자동 확장 푸시 잠금은 많은 수의 동시 공유 인수로 인해 캐시 경합이 높은 것으로 감지되면 캐시 인식이 아닌 일반 푸시 잠금에서 캐시 인식 푸시 잠금으로 자동으로 변경될 수 있습니다. 자동 확장 푸시 잠금은 확장되지 않을 때 일반 푸시 잠금보다 크지만 캐시 인식 푸시 잠금만큼 크지는 않습니다. 이 푸시 잠금 유형은 다중 프로세서 시스템에서 더 성능이 높습니다.
요구 사항
| 머리글 | ntifs.h(Ntifs.h, Fltkernel.h 포함) |
참조
피드백
다음에 대한 사용자 의견 제출 및 보기