FLT_TAG_DATA_BUFFER 구조체(fltkernel.h)
FLT_TAG_DATA_BUFFER 구조체에는 재분석 지점 태그에 대한 정보가 포함됩니다.
구문
typedef struct _FLT_TAG_DATA_BUFFER {
ULONG FileTag;
USHORT TagDataLength;
USHORT UnparsedNameLength;
union {
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
ULONG Flags;
WCHAR PathBuffer[1];
} SymbolicLinkReparseBuffer;
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
WCHAR PathBuffer[1];
} MountPointReparseBuffer;
struct {
UCHAR DataBuffer[1];
} GenericReparseBuffer;
struct {
GUID TagGuid;
UCHAR DataBuffer[1];
} GenericGUIDReparseBuffer;
};
} FLT_TAG_DATA_BUFFER, *PFLT_TAG_DATA_BUFFER;
멤버
FileTag
재분석 지점을 고유하게 식별하는 태그입니다. ntifs.h에 정의된 Microsoft 정의 IO_REPARSE_TAG_XXX 값 또는 ISV 정의 값 중 하나일 수 있습니다.
TagDataLength
DataBuffer 멤버가 가리키는 재분석 데이터의 크기(바이트)입니다.
UnparsedNameLength
연결된 파일 개체의 FileName 멤버가 가리키는 파일 이름의 분리되지 않은 부분의 길이(바이트)입니다. FileName 멤버에 대한 자세한 내용은 FILE_OBJECT.
SymbolicLinkReparseBuffer
FileTag가 IO_REPARSE_TAG_SYMLINK 경우 이 구조를 사용하여 페이로드를 해석할 수 있습니다.
SymbolicLinkReparseBuffer.SubstituteNameOffset
PathBuffer 배열에 있는 대체 이름 문자열의 오프셋(바이트)입니다. 배열 인덱스 가져오기를 위해서는 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.
SymbolicLinkReparseBuffer.SubstituteNameLength
대체 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL_terminated 경우 SubstituteNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.
SymbolicLinkReparseBuffer.PrintNameOffset
PathBuffer 배열에 있는 인쇄 이름 문자열의 오프셋(바이트)입니다. 배열 인덱스 가져오기를 위해서는 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.
SymbolicLinkReparseBuffer.PrintNameLength
인쇄 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL_terminated 경우 PrintNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.
SymbolicLinkReparseBuffer.Flags
기호 링크가 절대 링크인지 상대 링크인지를 나타냅니다. Flags에 SYMLINK_FLAG_RELATIVE 포함된 경우 PathBuffer(오프셋 SubstituteNameOffset)에 포함된 기호 링크가 상대 링크로 처리됩니다. 그렇지 않으면 절대 링크로 처리됩니다.
SymbolicLinkReparseBuffer.PathBuffer[1]
경로 문자열의 첫 번째 문자입니다. 이 문자는 메모리에서 문자열의 나머지 부분 뒤에 잇습니다. 경로 문자열에는 대체 이름 문자열과 인쇄 이름 문자열이 포함됩니다. 대체 이름 및 인쇄 이름 문자열은 PathBuffer에 임의의 순서로 표시할 수 있습니다. PathBuffer에서 대체 이름 및 인쇄 이름 문자열을 찾으려면 SubstituteNameOffset, SubstituteNameLength, PrintNameOffset 및 PrintNameLength 멤버를 사용합니다.
MountPointReparseBuffer
FileTag가 IO_REPARSE_TAG_MOUNT_POINT 경우 이 구조를 사용하여 페이로드를 해석할 수 있습니다.
MountPointReparseBuffer.SubstituteNameOffset
PathBuffer 배열에 있는 대체 이름 문자열의 오프셋(바이트)입니다. 배열 인덱스 가져오기를 위해서는 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.
MountPointReparseBuffer.SubstituteNameLength
대체 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL_terminated 경우 SubstituteNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.
MountPointReparseBuffer.PrintNameOffset
PathBuffer 배열에 있는 인쇄 이름 문자열의 오프셋(바이트)입니다. 배열 인덱스 가져오기를 위해서는 이 오프셋을 sizeof(WCHAR)로 나누어야 합니다.
MountPointReparseBuffer.PrintNameLength
인쇄 이름 문자열의 길이(바이트)입니다. 이 문자열이 NULL_terminated 경우 PrintNameLength 는 UNICODE_NULL 종결자에 대한 공간을 포함하지 않습니다.
MountPointReparseBuffer.PathBuffer[1]
경로 문자열의 첫 번째 문자입니다. 이 문자는 메모리에서 문자열의 나머지 부분 뒤에 잇습니다. 경로 문자열에는 대체 이름 문자열과 인쇄 이름 문자열이 포함됩니다. 대체 이름 및 인쇄 이름 문자열은 PathBuffer에 임의의 순서로 표시할 수 있습니다. PathBuffer에서 대체 이름 및 인쇄 이름 문자열을 찾으려면 SubstituteNameOffset, SubstituteNameLength, PrintNameOffset 및 PrintNameLength 멤버를 사용합니다.
GenericReparseBuffer
이 구조를 사용하여 Microsoft 정의 IO_REPARSE_TAG_XXX 태그에 대한 페이로드를 해석할 수 있습니다.
GenericReparseBuffer.DataBuffer[1]
재분석 지점에 대한 사용자 정의 데이터가 포함된 버퍼에 대한 포인터입니다.
GenericGUIDReparseBuffer
이 구조를 사용하여 IO_REPARSE_TAG_XXX 태그에 대한 페이로드를 해석할 수 있습니다.
GenericGUIDReparseBuffer.TagGuid
재분석 지점의 유형을 식별하는 GUID(Globally Unique Identifier)입니다. FileTag가 Microsoft 태그가 아닌 경우 이 멤버는 NULL일 수 없습니다.
GenericGUIDReparseBuffer.DataBuffer[1]
재분석 지점에 대한 사용자 정의 데이터가 포함된 버퍼에 대한 포인터입니다.
설명
미니 필터는 FLT_TAG_DATA_BUFFER 구조를 사용하여 재분석 지점 태그에 대한 정보를 저장할 수 있습니다.
공용 구조체에서 GenericGUIDReparseBuffer 구조를 사용하여 IO_REPARSE_TAG_XXX 태그에 대한 페이로드를 해석하거나 필요에 따라 공용 구조체 내의 다른 구조체 중 하나를 다음과 같이 사용할 수 있습니다.
Microsoft 정의 IO_REPARSE_TAG_XXX 태그에 GenericReparseBuffer 구조를 사용합니다.
FileTag가 IO_REPARSE_TAG_SYMLINK 때 SymbolicLinkReparseBuffer 구조를 사용합니다.
FileTag가 IO_REPARSE_TAG_MOUNT_POINT 경우 MountPointReparseBuffer 구조를 사용합니다.
작업에 대한 재분석 지점 태그 데이터를 포함하는 FLT_TAG_DATA_BUFFER 구조체에 대한 포인터는 작업에 대한 FLT_CALLBACK_DATA 구조체의 TagData 멤버에 저장됩니다.
FLT_TAG_DATA_BUFFER_HEADER_SIZE 매크로는 FLT_TAG_DATA_BUFFER 구조체의 고정 부분의 크기를 반환합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | fltkernel.h(FltKernel.h 포함) |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기