次の方法で共有


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 を 1 回呼び出します。
  • ファイル システムは適切な構造を割り当て、サポートされている場合は、作成の処理中に要求された情報を入力します。
  • 作成後、ミニフィルターは FltRetrieveFileInfoOnCreateCompletionEx 呼び出して、事前作成呼び出しで要求された情報を取得します。 ミニフィルターが複数の情報の種類を要求した場合は、各情報の種類 FltRetrieveFileInfoOnCreateCompletionEx を 1 回呼び出す必要があります。 例えば:

// 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

関連項目

ECP_LIST

FLT_CALLBACK_DATA

FltRequestFileInfoOnCreateCompletion の

QUERY_ON_CREATE_EA_INFORMATION

QUERY_ON_CREATE_FILE_STAT_INFORMATION

QUERY_ON_CREATE_FILE_LX_INFORMATION