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
FltParseFileNameInformation에 의해 이름 문자열에서 구문 분석된 이름 구성 요소를 나타내는 플래그의 비트 마스크입니다. 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
이름 멤버에 저장된 이름 정보의 형식입니다. 이 멤버는 다음 값 중 하나일 수 있습니다. (이러한 형식에 대한 설명은 다음 설명 섹션을 참조하세요.)
값 | 의미 |
---|---|
FLT_FILE_NAME_NORMALIZED | Name 멤버에는 파일의 정규화된 이름이 포함됩니다. |
FLT_FILE_NAME_OPENED | Name 멤버에는 파일을 열 때 사용된 이름이 포함됩니다. 이 이름 문자열은 정규화되지 않습니다. |
FLT_FILE_NAME_SHORT | Name 멤버는 파일의 짧은 이름(8.3)을 포함합니다. 파일의 짧은 이름에는 볼륨 이름, 디렉터리 경로 또는 스트림 이름이 포함되지 않습니다. 이 이름 문자열은 정규화되지 않습니다. |
Name
형식멤버에서 지정한 대로 형식이 지정된 파일 이름 문자열을 포함하는 UNICODE_STRING 구조체입니다.
Volume
이름 문자열에서 구문 분석된 볼륨 이름을 포함하는 UNICODE_STRING 구조체입니다. Format이 FLT_FILE_NAME_SHORT 경우 Volume.Length는 0입니다.
Share
원격 파일의 이름 문자열에서 구문 분석된 네트워크 공유 이름을 포함하는 UNICODE_STRING 구조체입니다. Format이 FLT_FILE_NAME_SHORT 경우 Share.Length는 0입니다.
Extension
이름 문자열에서 구문 분석된 확장을 포함하는 구조체를 UNICODE_STRING. 확장이 없으면 FltParseFileNameInformation 은 Extension.Length 를 0으로 설정합니다.
Stream
UNICODE_STRING 문자열에서 구문 분석된 스트림 이름을 포함하는 구조체입니다. 스트림 이름을 찾을 수 없거나 Format이 FLT_FILE_NAME_SHORT 경우 FltParseFileNameInformation은 Stream 설정합니다. 길이를 0으로 설정합니다.
FinalComponent
이름 문자열에서 구문 분석된 최종 이름 구성 요소가 포함된 UNICODE_STRING 구조체입니다. 최종 구성 요소 이름을 찾을 수 없거나 Format 이 FLT_FILE_NAME_SHORT 경우 FltParseFileNameInformation 은 FinalComponent.Length 를 0으로 설정합니다.
ParentDir
이름 문자열에서FltParseFileNameInformation으로 구문 분석된 부모 디렉터리 이름을 포함하는 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, FltGetFileNameInformationUnsafe 또는 FltGetDestinationFileNameInformation을 호출합니다. 이러한 루틴은 모든 미니필터가 공유하는 필터 관리자 소유의 FLT_FILE_NAME_INFORMATION 구조체에 대한 포인터를 반환합니다.
여러 UNICODE_STRING 구조체가 포함되어 있지만 FLT_FILE_NAME_INFORMATION 구조체의 모든 UNICODE_STRING 구조체가 단일 버퍼를 공유하므로 FLT_FILE_NAME_INFORMATION 구조체는 메모리의 많은 공간을 차지하지 않습니다.
이름 문자열의 내용을 구문 분석하려면 FltParseFileNameInformation을 호출합니다. 이 루틴은 이 구조체의 Extension, Stream, FinalComponent, ParentDir 및 NamesParsed 멤버의 값을 설정합니다.
미니필터는 FltReleaseFileNameInformation 을 호출하여 더 이상 필요하지 않은 FLT_FILE_NAME_INFORMATION 구조를 해제합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | fltkernel.h(Fltkernel.h 포함) |
추가 정보
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe