FLT_FILE_NAME_INFORMATION 구조체(fltkernel.h)
FLT_FILE_NAME_INFORMATION 구조에는 파일 이름 정보가 포함됩니다.
통사론
typedef struct _FLT_FILE_NAME_INFORMATION {
USHORT Size;
FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
FLT_FILE_NAME_OPTIONS Format;
UNICODE_STRING Name;
UNICODE_STRING Volume;
UNICODE_STRING Share;
UNICODE_STRING Extension;
UNICODE_STRING Stream;
UNICODE_STRING FinalComponent;
UNICODE_STRING ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;
회원
Size
FLT_FILE_NAME_INFORMATION 구조체의 크기(바이트)입니다.
NamesParsed
FltParseFileNameInformationName 문자열에서 구문 분석된 이름 구성 요소를 나타내는 플래그의 비트 마스크입니다. Name 문자열을 구문 분석할 때 구성 요소가 문자열에 있는지 여부에 관계없이 FltParseFileNameInformation 각 구성 요소에 대해 이 플래그를 설정합니다. 이러한 값은 OR 연산자를 사용하여 결합할 수 있습니다.
기 | 구성 요소 |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | finalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | 확장 |
FLTFL_FILE_NAME_PARSED_STREAM | 스트림 |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Name 멤버에 저장된 이름 정보의 형식입니다. 이 멤버는 다음 값 중 하나일 수 있습니다. (이러한 형식에 대한 설명은 다음 설명 섹션을 참조하세요.)
값 | 의미 |
---|---|
FLT_FILE_NAME_NORMALIZED | Name 멤버에는 파일의 정규화된 이름이 포함됩니다. |
FLT_FILE_NAME_OPENED | Name 멤버에는 파일을 열 때 사용한 이름이 포함됩니다. 이 이름 문자열은 정규화되지 않습니다. |
FLT_FILE_NAME_SHORT | Name 멤버는 파일의 짧은 이름(8.3)을 포함합니다. 파일의 짧은 이름에는 볼륨 이름, 디렉터리 경로 또는 스트림 이름이 포함되지 않습니다. 이 이름 문자열은 정규화되지 않습니다. |
Name
Format 멤버에서 지정한 대로 형식이 지정된 파일 이름 문자열을 포함하는 UNICODE_STRING 구조체입니다.
Volume
Name 문자열에서 구문 분석된 볼륨 이름을 포함하는 UNICODE_STRING 구조체입니다. 서식 FLT_FILE_NAME_SHORT 경우 volume.Length 0입니다.
Share
원격 파일의 이름 문자열에서 구문 분석된 네트워크 공유 이름을 포함하는 UNICODE_STRING 구조체입니다. 서식 FLT_FILE_NAME_SHORT 경우 share.Length 0입니다.
Extension
Name 문자열에서 구문 분석된 확장을 포함하는 UNICODE_STRING 구조체입니다. 확장이 없으면 fltParseFileNameInformation Extension.Length 0으로 설정합니다.
Stream
Name 문자열에서 구문 분석된 스트림 이름을 포함하는 UNICODE_STRING 구조체입니다. 스트림 이름을 찾을 수 없거나 Format FLT_FILE_NAME_SHORT 경우 FltParseFileNameInformationStream.Length 0으로 설정합니다.
FinalComponent
Name 문자열에서 구문 분석된 최종 이름 구성 요소가 포함된 UNICODE_STRING 구조체입니다. 최종 구성 요소 이름을 찾을 수 없거나 Format FLT_FILE_NAME_SHORT 경우 FltParseFileNameInformation FinalComponent.Length 0으로 설정합니다.
ParentDir
FltParseFileNameInformationName 문자열에서 구문 분석된 부모 디렉터리 이름을 포함하는 UNICODE_STRING 구조체입니다. 부모 디렉터리 이름이 없거나 Format FLT_FILE_NAME_SHORT 경우 FltParseFileNameInformation ParentDir.Length 0으로 설정합니다.
발언
Name 멤버에는 다음 중 하나가 포함됩니다.
- 파일의 정규화된 이름
- 파일의 열린 이름
- 파일의 짧은 이름
- 사용자가 파일 ID로 파일을 열었지만 전체 경로에 대한 트래버스 권한이 없는 한 볼륨 이름을 포함하여 파일에 대한 전체 디렉터리 경로가 포함됩니다. (자세한 내용은 FltGetFileNameInformation참조하세요.)
- 볼륨 이름은 볼륨의 존재하지 않는 디바이스 개체 이름입니다(예: "\Device\HarddiskVolume1").
- 모든 짧은 이름은 해당하는 긴 이름으로 확장됩니다.
- 모든 후행 ":$DATA" 또는 "::$DATA" 문자열은 스트림 이름에서 제거됩니다.
- 모든 탑재 지점이 확인됩니다.
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
다음은 원격 파일의 정규화된 파일 이름의 예입니다.
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
파일의 열린 이름은 파일을 열 때 사용한 이름입니다. 정규화된 이름과 마찬가지로 볼륨 이름을 포함하여 파일의 전체 디렉터리 경로가 포함됩니다. 다음과 같은 방법으로 정규화된 이름과 다릅니다.
- 파일의 디렉터리 경로에는 짧은 이름과 긴 이름이 포함될 수 있습니다.
- 후행 ":$DATA" 및 "::$DATA" 문자열은 스트림 이름에서 제거되지 않습니다.
- 탑재 지점이 확인되지 않습니다.
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA
다음은 원격 파일에 대해 열린 파일 이름의 예입니다.
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
파일에 대한 짧은 이름 파일 이름의 최종 구성 요소에 대한 짧은(8.3) 이름입니다. 파일이 열릴 때 생성되므로 열지 않은 파일 개체에는 짧은 이름을 사용할 수 없으며 만들기 디스패치("미리 만들기") 경로에서는 사용할 수 없습니다. NTFS 스트림 파일 개체에도 사용할 수 없습니다. 열려 있는 모든 파일에 짧은 파일 이름이 있는 것은 아닙니다. 예를 들어 짧은 파일 이름 생성을 사용하지 않도록 설정한 NTFS 파티션에서는 짧은 파일 이름이 있는 파일이 없습니다.
다음은 파일에 대한 짧은 이름의 예입니다.
TestRe~1.txt
파일에 대한 FLT_FILE_NAME_INFORMATION 구조를 가져오려면 FltGetFileNameInformation, FltGetFileNameNameInformationUnsafe또는 fltGetDestinationFileNameInformation 호출합니다. 이러한 루틴은 모든 미니 필터에서 공유하는 필터 관리자 소유 FLT_FILE_NAME_INFORMATION 구조체에 대한 포인터를 반환합니다.
FLT_FILE_NAME_INFORMATION 구조체의 모든 UNICODE_STRING UNICODE_STRING 구조체가 단일 버퍼를 공유하므로 FLT_FILE_NAME_INFORMATION 구조체는 많은 메모리 공간을 차지하지 않습니다.
Name 문자열의 내용을 구문 분석하려면 FltParseFileNameInformation호출합니다. 이 루틴은 이 구조의 확장, Stream, finalComponent , ParentDir및 NamesParsed 멤버의 값을 설정합니다.
미니 필터는 더 이상 필요하지 않은 경우 FltReleaseFileNameInformation 호출하여 FLT_FILE_NAME_INFORMATION 구조를 해제해야 합니다.
요구 사항
요구 | 값 |
---|---|
헤더 | fltkernel.h(Fltkernel.h 포함) |
참고 항목
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe