次の方法で共有


FsRtlAllocateExtraCreateParameterFromLookasideList 関数 (ntifs.h)

FsRtlAllocateExtraCreateParameterFromLookasideList ルーチンは、追加の create パラメーター (ECP) コンテキスト構造のために特定のルックアサイド リストからメモリ プールを割り当て、その構造体へのポインターを生成します。

構文

NTSTATUS FsRtlAllocateExtraCreateParameterFromLookasideList(
  [in]           LPCGUID                                        EcpType,
  [in]           ULONG                                          SizeOfContext,
  [in]           FSRTL_ALLOCATE_ECP_FLAGS                       Flags,
  [in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
  [in, out]      PVOID                                          LookasideList,
  [out]          PVOID                                          *EcpContext
);

パラメーター

[in] EcpType

コンテキスト構造を割り当てる必要がある ECP の型を示す GUID へのポインター。 ECP の詳細については、「IRP_MJ_CREATE操作での追加の作成パラメーターの使用 」を参照してください。

[in] SizeOfContext

ECP コンテキスト構造のサイズ (バイト単位)。

[in] Flags

プールの割り当てオプションを定義します。 SizeOfContext パラメーターの値が、LookasideList パラメーターが指すルックアサイド リストのサイズ (バイト単位) より大きい場合、fsRtlAllocateExtraCreateParameterFromLookasideList はルックアサイド リストの代わりにシステム プールから ECP コンテキスト構造を割り当てます。 この場合、Flags パラメーターに FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA ビット フラグ値が含まれている場合、FsRtlAllocateExtraCreateParameterFromLookasideList によって割り当てられたシステム プールは、現在のプロセスのメモリ クォータに対して課金されます。 ビット フラグ値の詳細については、fsRtlAllocateExtraCreateParameterの Flags パラメーター 参照してください。 より一般的なケースでは、fsRtlAllocateExtraCreateParameterFromLookasideList がルックアサイド リストから ECP コンテキスト構造のメモリを割り当てる と、fsRtlAllocateExtraCreateParameterFromLookasideList FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTAビット フラグが無視されます。

[in, optional] CleanupCallback

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK型のミニフィルター定義クリーンアップ コールバック ルーチンへの省略可能なポインター。 クリーンアップ コールバック ルーチンは、ECP コンテキスト構造が削除されるときに呼び出されます。 クリーンアップ コールバック ルーチンが適用できない場合は、このパラメーターを NULL を に設定します。

[in, out] LookasideList

FsRtlAllocateExtraCreateParameterFromLookasideList がプールの割り当てを試行 初期化されたルックアサイド リストへのポインター (ECP コンテキスト構造の場合)。 ルックアサイド リストを初期化するには、FsRtlInitExtraCreateParameterLookasideList ルーチンを使用します。

[out] EcpContext

割り当てられた ECP コンテキスト構造体へのポインターを受け取る場所へのポインター。 FsRtlAllocateExtraCreateParameterFromLookasideList ECP コンテキスト構造に十分なプールを割り当てられなかった場合 、fsRtlAllocateExtraCreateParameterFromLookasideList EcpContext が NULL に設定され、状態コード STATUS_INSUFFICIENT_RESOURCESが返されます。

戻り値

FsRtlAllocateExtraCreateParameterFromLookasideList ルーチンは、次のいずれかの値を返すことができます。

リターン コード 形容
STATUS_INSUFFICIENT_RESOURCES FsRtlAllocateExtraCreateParameterFromLookasideList ルーチンは、ECP コンテキスト構造に十分なメモリを割り当てませんでした。 この場合、EcpContext パラメーターは NULLです。
STATUS_SUCCESS ECP コンテキスト構造が正常に割り当てられました。 この場合、fsRtlAllocateExtraCreateParameterFromLookasideList は、EcpContext パラメーターで割り当てられた構造体へのポインターを返します。

備考

FsRtlInitExtraCreateParameterLookasideList ルーチンを使用して、ページプールのルックアサイド リストまたは非ページ プールルックアサイド リストを初期化します。 FsRtlAllocateExtraCreateParameterFromLookasideList ルーチンを使用してルックアサイド リストから ECP コンテキスト構造を割り当て、FsRtlFreeExtraCreateParameter ルーチンを使用して ECP コンテキスト構造体の割り当てを解除します。

FsRtlDeleteExtraCreateParameterLookasideList ルーチンを使用して、ルックアサイド リストを解放します。

ドライバーは、アンロードする前に作成するすべての ECP コンテキスト構造とルックアサイド リストを解放する必要があります。 ただし、ファイル システムまたはファイル システム フィルター ドライバーが、IRP_MJ_CREATE 要求の処理中に既存または新しく作成された ECP_LIST に ECP をアタッチすると、IRP が完了すると、この ECP が自動的にクリーンアップされます。 その結果、フィルター ドライバーは、動的に追加される ECP をクリーンアップする必要はありません。 これにより、フィルター ドライバーの ECP を再解析ポイント間で適切に伝達できます。これは、複数の IRP_MJ_CREATE 要求を生成する必要があるプロセスです。

ドライバーでルックアサイド リストを使用する方法の詳細については、「ルックアサイド リストを使用する」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント FsRtlAllocateExtraCreateParameterFromLookasideList は、Windows Vista 以降で使用できます。
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

関連項目

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK