PFLT_GENERATE_FILE_NAME 콜백 함수(fltkernel.h)

필터 관리자의 이름 캐시에 대한 파일 이름을 제공하는 미니필터 드라이버는 PFLT_GENERATE_FILE_NAME 유형의 루틴을 미니필터 드라이버의 GenerateFileNameCallback 루틴으로 등록할 수 있습니다.

구문

PFLT_GENERATE_FILE_NAME PfltGenerateFileName;

NTSTATUS PfltGenerateFileName(
  [in]           PFLT_INSTANCE Instance,
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PFLT_CALLBACK_DATA CallbackData,
  [in]           FLT_FILE_NAME_OPTIONS NameOptions,
  [out]          PBOOLEAN CacheFileNameInformation,
  [out]          PFLT_NAME_CONTROL FileName
)
{...}

매개 변수

[in] Instance

이 콜백 루틴이 등록된 미니필터 드라이버 instance 대한 불투명 instance 포인터입니다.

[in] FileObject

이름이 요청되는 파일의 파일 개체에 대한 포인터입니다.

[in, optional] CallbackData

이 이름이 요청되는 동안 작업에 대한 콜백 데이터 구조에 대한 포인터입니다. 파일 이름을 검색하기 위해 FltGetFileNameInformationUnsafe를 호출할 때 이 매개 변수는 NULL입니다.

[in] NameOptions

파일 이름 정보 쿼리의 이름 형식, 쿼리 메서드 및 플래그를 지정하는 FLT_FILE_NAME_OPTIONS 값입니다.

[out] CacheFileNameInformation

이 이름을 캐시할 수 있는지 여부를 지정하는 부울 값에 대한 포인터입니다. 이름을 캐시할 수 있는 경우 출력 시 TRUE 로 설정합니다. 그렇지 않으면 FALSE 로 설정합니다.

[out] FileName

출력 시 파일 이름을 수신하기 위해 필터 관리자가 할당한 FLT_NAME_CONTROL 구조체에 대한 포인터입니다.

반환 값

이 콜백 루틴은 STATUS_SUCCESS 또는 적절한 NTSTATUS 값을 반환합니다.

설명

필터 관리자의 이름 캐시에 대한 파일 이름을 제공하는 미니필터 드라이버는 PFLT_GENERATE_FILE_NAME 유형의 루틴을 미니필터 드라이버의 GenerateFileNameCallback 루틴으로 등록할 수 있습니다.

이 콜백 루틴을 등록하기 위해 미니필터 드라이버는 미니필터 드라이버가 FltRegisterFilter에 매개 변수로 전달하는 FLT_REGISTRATION 구조체의 GenerateFileNameCallback 멤버에 PFLT_GENERATE_FILE_NAME 형식의 루틴 주소를 저장합니다.

필터 관리자는 이 콜백 루틴을 호출하여 미니필터 드라이버가 미니필터 드라이버 instance 스택에서 그 위에 있는 다른 미니필터 드라이버의 파일 이름 요청을 가로챌 수 있도록 합니다. 이 콜백 루틴과 PFLT_NORMALIZE_NAME_COMPONENT 콜백 루틴을 사용하여 미니필터 드라이버는 자체 파일 이름 정보를 제공할 수 있습니다.

요청되는 파일 이름 형식을 확인하려면 NameOptions 매개 변수에서 FltGetFileNameFormat을 호출합니다.

Windows 8 전에 이 콜백 루틴은 열린 파일 이름과 짧은 파일 이름에 대해서만 호출됩니다. 필터 관리자가 정규화된 파일 이름에 대한 요청을 받으면 이 콜백 루틴을 호출하여 열린 파일 이름을 요청합니다. 그런 다음 미니필터 드라이버의 PFLT_NORMALIZE_NAME_COMPONENT 콜백을 호출하여 파일 이름의 각 구성 요소를 정규화합니다.

Windows 8 시작해서 정규화된 이름에 대해서도 이 콜백 루틴이 호출됩니다. 필터 관리자가 정규화된 파일 이름에 대한 요청을 받으면 NameOptions 매개 변수에 지정된 FLT_FILE_NAME_NORMALIZED 사용하여 이 콜백 루틴을 호출합니다. 미니필터가 이 콜백에서 STATUS_SUCCESS 반환하는 경우 미니필터의 PFLT_NORMALIZE_NAME_COMPONENT 콜백이 호출되지 않습니다. 미니필터가 실패 코드(예: STATUS_NOT_SUPPORTED)를 반환하는 경우 필터 관리자는 이 콜백 루틴을 다시 호출하여 열린 파일 이름을 요청합니다. 필터 관리자는 미니필터 드라이버의 PFLT_NORMALIZE_NAME_COMPONENT 콜백을 호출하여 파일 이름의 각 구성 요소를 정규화합니다.

이 콜백 루틴이 호출되면 미니필터 드라이버는 파일에 대한 파일 시스템의 파일 이름 정보를 기반으로 고유한 파일 이름 정보를 생성합니다. 파일에 대한 파일 시스템의 파일 이름 정보를 얻으려면 FltGetFileNameInformation, FltGetFileNameInformationUnsafe 또는 FltGetDestinationFileNameInformation을 호출합니다.

열린 파일 이름의 경우 생성된 파일 이름 정보에 볼륨 정보가 포함되어야 합니다. 원격 파일의 경우 공유 정보도 포함해야 합니다.

다음은 원격 파일에 대해 열린 파일 이름의 예입니다.

\Device\LanManRedirector\MyServer\MyShare\Docume~1\MyUser\My Documents\TestRe~1.txt:stream1

파일 이름 형식에 대한 자세한 내용은 FLT_FILE_NAME_INFORMATIONFltParseFileNameInformation에 대한 참조 항목을 참조하세요.

파일 이름 정보를 생성한 후 미니필터 드라이버는 FltCheckAndGrowNameControl을 호출하여 FileName 매개 변수가 가리키는 FLT_NAME_CONTROL 구조에 생성된 파일 이름을 저장할 수 있을 만큼 큰 이름 버퍼가 포함되어 있는지 여부를 검사 합니다. 이름 버퍼가 너무 작으면 FltCheckAndGrowNameControl 이 더 큰 버퍼로 바꿉니다. 그런 다음 미니필터 드라이버는 파일 이름 정보를 이름 버퍼에 저장하고 를 반환합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 fltkernel.h(Fltkernel.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

FLT_CALLBACK_DATA

FLT_FILE_NAME_INFORMATION

FLT_FILE_NAME_OPTIONS

FLT_NAME_CONTROL

FLT_REGISTRATION

FltCheckAndGrowNameControl

FltGetDestinationFileNameInformation

FltGetFileNameFormat

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetFileNameQueryMethod

FltParseFileName

FltParseFileNameInformation

FltPurgeFileNameInformationCache

FltRegisterFilter

PFLT_NORMALIZE_CONTEXT_CLEANUP

PFLT_NORMALIZE_NAME_COMPONENT

PFLT_NORMALIZE_NAME_COMPONENT_EX