FS_FILTER_CALLBACK_DATA 구조체(ntifs.h)
FS_FILTER_CALLBACK_DATA FS_FILTER_CALLBACKS FS_FILTER_CALLBACK 또는 FS_FILTER_COMPLETION_CALLBACK 작업에 대한 콜백 데이터 구조입니다.
구문
typedef struct _FS_FILTER_CALLBACK_DATA {
ULONG SizeOfFsFilterCallbackData;
UCHAR Operation;
UCHAR Reserved;
struct _DEVICE_OBJECT *DeviceObject;
struct _FILE_OBJECT *FileObject;
FS_FILTER_PARAMETERS Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
멤버
SizeOfFsFilterCallbackData
이 구조체의 크기(바이트)입니다. sizeof(FS_FILTER_CALLBACK_DATA)
로 설정합니다.
Operation
콜백 루틴을 호출할 파일 시스템 작업입니다. 이 작업은 다음 중 하나일 수 있습니다.
- FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION
- FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION
- FS_FILTER_ACQUIRE_FOR_MOD_WRITE
- FS_FILTER_RELEASE_FOR_MOD_WRITE
- FS_FILTER_ACQUIRE_FOR_CC_FLUSH
- FS_FILTER_RELEASE_FOR_CC_FLUSH FS_FILTER_QUERY_OPEN
Reserved
시스템에서 사용하도록 예약되었습니다.
DeviceObject
이 작업에 대한 디바이스 개체입니다.
FileObject
이 작업의 파일 개체입니다.
Parameters
작업별 매개 변수를 포함하는 공용 구조체입니다. 설명 부분을 참조하세요.
설명
는 파일 시스템 또는 필터 드라이버의 DriverEntry 루틴에서 FsRtlRegisterFileSystemFilterCallbacks에 전달되는 FS_FILTER_CALLBACKS 구조체의 멤버입니다.
매개 변수 공용 구조체는 다음과 같이 정의됩니다.
typedef union _FS_FILTER_PARAMETERS {
//
// AcquireForModifiedPageWriter
//
struct {
PLARGE_INTEGER EndingOffset;
PERESOURCE *ResourceToRelease;
} AcquireForModifiedPageWriter;
//
// ReleaseForModifiedPageWriter
//
struct {
PERESOURCE ResourceToRelease;
} ReleaseForModifiedPageWriter;
//
// AcquireForSectionSynchronization
//
struct {
FS_FILTER_SECTION_SYNC_TYPE SyncType;
ULONG PageProtection;
PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
ULONG Flags;
} AcquireForSectionSynchronization;
//
// QueryOpen
//
struct {
PIRP Irp;
PVOID FileInformation;
PULONG Length;
FILE_INFORMATION_CLASS FileInformationClass;
NTSTATUS CompletionStatus;
} QueryOpen;
//
// Other
//
struct {
PVOID Argument1;
PVOID Argument2;
PVOID Argument3;
PVOID Argument4;
PVOID Argument5;
} Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
FS_FILTER_PARAMETERS 공용 구조체의 구조체 멤버는 다음과 같이 설명됩니다.
AcquireForModifiedPageWriter
- EndOffset: 작성 중인 마지막 바이트의 오프셋과 1개.
- ResourceToRelease: 릴리스할 리소스입니다. 이 매개 변수에는 NULL 값이 없어야 합니다.
ReleaseForModifiedPageWriter
- ResourceToRelease: 릴리스할 리소스입니다. 이 매개 변수에는 NULL 값이 없어야 합니다.
AcquireForSectionSynchronization
SyncType: 섹션에 대해 요청된 동기화 유형입니다. 섹션을 만드는 경우 SyncTypeCreateSection 으로 설정합니다. SyncType이면 이 고, 그렇지 않으면 입니다.
PageProtection: 섹션에 대해 요청된 페이지 보호의 유형입니다. SyncType이SyncTypeOther인 경우 0이어야 합니다. 그렇지 않으면 다음 플래그 중 하나일 수 있으며 PAGE_NOCACHE 사용할 수 있습니다.
- PAGE_NOACCESS
- PAGE_READONLY
- PAGE_READWRITE
- PAGE_WRITECOPY
- PAGE_EXECUTE
- PAGE_EXECUTE_READ
- PAGE_EXECUTE_READWRITE
- PAGE_EXECUTE_WRITECOPY
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
OutputInformation: 섹션에 대한 확장 출력 정보를 포함하는 FS_FILTER_SECTION_SYNC_OUTPUT 구조체입니다.
Flags: SyncType 이 SyncTypeCreateSection인 경우 Flags 는 다음 값 중 하나일 수 있습니다.
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_ACCESS(0x00000001): 파일 시스템은 생성되는 섹션을 통해 파일에 액세스하기 위한 마지막 액세스 시간을 업데이트해서는 안 됩니다.
- FS_FILTER_SECTION_SYNC_IN_FLAG_DONT_UPDATE_LAST_WRITE(0x00000002): 파일 시스템은 생성되는 섹션을 통해 파일을 수정하기 위한 마지막 쓰기 시간을 업데이트해서는 안 됩니다.
QueryOpen
Irp: 이 작업과 연결된 IRP에 대한 포인터입니다.
FileInformation: 루틴이 파일 개체에 대해 요청된 정보를 쓰는 호출자가 할당한 버퍼에 대한 포인터입니다. FileInformationClass 멤버는 호출자가 요청하는 정보의 유형을 지정합니다.
길이: FileInformation에서 가리키는 버퍼의 크기(바이트)입니다.
CompletionStatus: 최종 완료 상태 및 작업에 대한 정보를 수신하는 NTSTATUS 값입니다. PostQueryOpen 콜백에서 CompletionStatus를 설정하여 작업에 실패할 수 있습니다. 사후 콜백에는 반환 값이 없기 때문에 이 작업이 실패합니다. 이는 주로 사용되므로 PostQueryOpen 콜백은 느린 경로에 대한 대체를 요청하는 STATUS_FLT_DISALLOW_FSFILTER_IO 반환할 수 있습니다. 이렇게 하면 I/O 관리자가 파일의 열기/쿼리/닫기를 수행하여 요청을 서비스합니다. 마찬가지로 PreQueryOpen 콜백은 STATUS_FLT_DISALLOW_FSFILTER_IO 반환하여 느린 경로에 대한 대체를 요청할 수 있습니다.
FileInformationClass: FileInformation 이 가리키는 버퍼에서 파일에 대해 반환할 정보의 형식입니다. 디바이스 및 중간 드라이버는 다음 FILE_INFORMATION_CLASS 값을 지정할 수 있습니다. 다른 값으로 인해 호출이 실패하고 PreQueryOpen/PostQueryOpen 호출에 전달되지 않아야 합니다.
FILE_INFORMATION_CLASS 값 반환된 정보 유형 FileStatInformation FILE_STAT_INFORMATION 구조체입니다. 이 구조체에는 액세스 마스크가 포함되어 있습니다. 액세스 마스크에 대한 자세한 내용은 ACCESS_MASK 참조하세요. FileStatLxInformation FILE_STAT_LX_INFORMATION 구조체입니다. 이 구조체에는 액세스 마스크가 포함되어 있습니다. 액세스 마스크에 대한 자세한 내용은 ACCESS_MASK 참조하세요. FileCaseSensitiveInformation FILE_CASE_SENSITIVE_INFORMATION 구조체입니다. 기타
- Argument1: 나중에 사용할 수 있습니다.
- Argument2: 나중에 사용할 수 있습니다.
- 인수3: 나중에 사용할 수 있습니다.
- Argument4: 나중에 사용할 수 있습니다.
- 인수5: 나중에 사용할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntifs.h |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기