다음을 통해 공유


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

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

[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 형식의 루틴 주소를 저장합니다.

필터 관리자는 이 콜백 루틴을 호출하여 미니 필터 드라이버가 미니 필터 드라이버 인스턴스 스택 위에 있는 다른 미니 필터 드라이버의 파일 이름 요청을 가로챌 수 있도록 합니다. 이 콜백 루틴과 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