FltRetrieveFileInfoOnCreateCompletionEx 함수(fltkernel.h)
FltRetrieveFileInfoOnCreateCompletionEx 는 파일을 만들 때 지정된 파일 정보를 쿼리합니다.
구문
NTSTATUS FLTAPI FltRetrieveFileInfoOnCreateCompletionEx(
[in] PFLT_FILTER Filter,
[in] PFLT_CALLBACK_DATA Data,
[in] ULONG InfoClass,
[out] PULONG RetInfoSize,
[out] PVOID *RetInfoBuffer
);
매개 변수
[in] Filter
미니필터 드라이버를 고유하게 식별하는 불투명 필터 포인터입니다. FltRegisterFilter에서 반환되며 미니필터 드라이버가 로드되는 한 일정하게 유지됩니다.
[in] Data
I/O 작업을 나타내는 FLT_CALLBACK_DATA 콜백 데이터에 대한 포인터입니다.
[in] InfoClass
반환할 파일 정보의 형식을 나타내는 플래그입니다. 플래그를 결합할 수 없습니다. 다음 값 중 하나일 수 있습니다.
플래그 | 의미 |
---|---|
QoCFileStatInformation (0x00000001) | 파일 시스템은 QUERY_ON_CREATE_FILE_STAT_INFORMATION 구조에서 파일 통계 정보를 반환합니다. |
QoCFileLxInformation (0x00000002) | 파일 시스템은 확장된 Linux와 유사한 정보를 QUERY_ON_CREATE_FILE_LX_INFORMATION 구조로 반환합니다. |
QoCFileEaInformation (0x00000004) | 파일 시스템은 QUERY_ON_CREATE_EA_INFORMATION 구조에서 EA(확장 특성)를 반환합니다. |
QoCFileUsnInformation (0x00000008) | 파일 시스템은 QUERY_ON_CREATE_USN_INFORMATION 구조에서 USN 정보를 반환합니다. |
QoCFileSecurityInformation (0x00000010) | 파일 시스템은 QUERY_ON_CREATE_SECURITY_INFORMATION 구조에서 파일 보안 정보를 반환합니다. |
[out] RetInfoSize
RetInfoBuffer가 가리키는 버퍼의 크기(바이트)를 수신하는 ULONG에 대한 포인터입니다.
[out] RetInfoBuffer
요청된 InfoClass 구조체에 대한 포인터를 받습니다. 파일 시스템에서 요청을 처리할 수 있지만 요청된 파일 정보를 찾을 수 없는 경우 이 매개 변수는 NULL로 설정됩니다.
반환 값
반환 코드 | 설명 |
---|---|
STATUS_SUCCESS | 파일 시스템에서 요청된 파일 정보를 성공적으로 반환했습니다. |
STATUS_NOT_FOUND | 파일 시스템에서 요청을 처리했지만 요청된 정보가 파일에 없거나 파일 시스템에서 InfoClass의 정보 요청을 인식하지 못합니다. 호출자는 기존 파일 시스템 API를 사용하여 정보를 요청해서는 안 됩니다. |
STATUS_NOT_SUPPORTED | 파일 시스템에서 요청된 정보를 검색할 수 없습니다. 이 오류는 파일 시스템이 정보 요청 또는 관련 ECP를 지원하지 않거나 파일을 미리 만드는 동안 FltRequestFileInfoOnCreateCompletion 이 호출되지 않았기 때문에 발생합니다. 대신 호출자는 기존 파일 시스템 API를 사용하여 정보를 다시 요청해야 합니다. |
STATUS_UNSUCCESSFUL | 요청된 정보를 검색하는 동안 파일 시스템에서 오류가 발생했습니다. 호출자는 일반 파일 시스템 API를 통해 정보를 요청할 수 있지만 실패할 수 있습니다. |
설명
FltRequestFileInfoOnCreateCompletion 및 FltRetrieveFileInfoOnCreateCompletionEx 를 사용하면 미니필터가 파일을 만드는 동안 파일에 대한 정보를 가져올 수 있으므로 스택 통과가 필요한 이후 쿼리의 성능 비용을 방지할 수 있습니다.
- 미리 만들기에서 미니필터는 요청된 정보를 식별하는 입력 InfoClassFlags의 조합으로 FltRequestFileInfoOnCreateCompletion을 한 번 호출합니다.
- 파일 시스템은 적절한 구조를 할당하고 요청된 정보를 작성을 처리하는 동안 지원되는 경우 채웁니다.
- 만들기 후 미니필터는 FltRetrieveFileInfoOnCreateCompletionEx 를 호출하여 사전 만들기 호출에서 요청한 정보를 가져옵니다. 미니필터가 둘 이상의 정보 유형을 요청한 경우 각 정보 유형 에 대해 FltRetrieveFileInfoOnCreateCompletionEx 를 한 번 호출해야 합니다. 예를 들면 다음과 같습니다.
// Pre-create:
NTSTATUS status;
status = FltRequestFileInfoOnCreateCompletion( Filter,
CallbackData,
QoCFileStatInformation
| QoCFileLxInformation
| QoCFileEaInformation
| QoCFileUsnInformation );
// Post-create:
NTSTATUS status;
ULONG fileStatSize, fileLxSize, fileEaSize;
QUERY_ON_CREATE_FILE_STAT_INFORMATION* fileStatInfo;
QUERY_ON_CREATE_FILE_LX_INFORMATION* fileLxInfo;
QUERY_ON_CREATE_EA_INFORMATION* fileEaInfo;
QUERY_ON_CREATE_USN_INFORMATION* fileUsnInfo;
QUERY_ON_CREATE_SECURITY_INFORMATION* fileSecurityInfo;
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
CallbackData,
QoCFileStatInformation,
&fileStatSize,
&fileStatInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
CallbackData,
QoCFileLxInformation,
&fileLxSize,
&fileLxInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
CallbackData,
QoCFileEaInformation,
&fileEaSize,
&fileEaInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
CallbackData,
QoCFileUsnInformation,
&fileUsnInfo,
&fileUsnInfo );
status = FltRetrieveFileInfoOnCreateCompletionEx( Filter,
CallbackData,
QoCFileSecurityInformation,
&fileSecurityInfo,
&fileSecurityInfo);
FltRetrieveFileInfoOnCreateCompletionEx가 반환되면 미니 필터가 RetInfoBuffer가 가리키는 버퍼에 쓸 수 있습니다. 해당 미니필터 위의 모든 필터는 수정된 정보 유형에서 FltRetrieveFileInfoOnCreateCompletionEx 를 호출하는 경우 변경 내용을 볼 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10, 버전 1809 |
머리글 | fltkernel.h |
추가 정보
FltRequestFileInfoOnCreateCompletion
QUERY_ON_CREATE_EA_INFORMATION
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기