次の方法で共有


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 コンテキスト構造に十分なプールを割り当てなかった場合、FsRtlAllocateExtraCreateParameterFromLookasideListEcpContextNULL に設定し、状態コード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 要求を生成する必要があるプロセスです。

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

要件

要件
サポートされている最小のクライアント FsRtlAllocateExtraCreateParameterFromLookasideList は、Windows Vista 以降で使用できます。
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK