次の方法で共有


KsCreateDefaultAllocatorEx 関数 (ks.h)

指定したメモリ プールを使用し、内部ディスパッチ テーブル (KSDISPATCH_TABLE) を使用して IoGetCurrentIrpStackLocation(pIrp)->FileObject をこのアロケーターに関連付ける既定のアロケーターを作成します。

構文

KSDDKAPI NTSTATUS KsCreateDefaultAllocatorEx(
  [in]           PIRP                     Irp,
  [in, optional] PVOID                    InitializeContext,
  [in, optional] PFNKSDEFAULTALLOCATE     DefaultAllocate,
  [in, optional] PFNKSDEFAULTFREE         DefaultFree,
  [in, optional] PFNKSINITIALIZEALLOCATOR InitializeAllocator,
  [in, optional] PFNKSDELETEALLOCATOR     DeleteAllocator
);

パラメーター

[in] Irp

アロケーター作成要求が処理されている IRP が含まれます。

[in, optional] InitializeContext

必要に応じて、外部アロケーターで使用するコンテキストが含まれます。 これは、アロケーター コンテキストを作成するときに、省略可能な InitializeAllocator コールバックの初期化コンテキストとしてのみ使用されます。 パラメーターは、それ以外の場合は使用されません。 外部アロケーターが指定されていない場合は、このパラメーターを NULL に設定する必要があります。

[in, optional] DefaultAllocate

必要に応じて、既定のプール割り当ての代わりに使用される外部割り当て関数が含まれます。 これが NULL の場合、既定の割り当てが使用されます。

[in, optional] DefaultFree

必要に応じて、既定のプール割り当ての代わりに使用される外部の空き関数が含まれます。 外部アロケーターが指定されていない場合は、このパラメーターを NULL に設定する必要があります。

[in, optional] InitializeAllocator

必要に応じて、InitializeContext パラメーターが渡される外部アロケーター初期化関数を格納します。 この関数は、アロケーター フレームに基づいてアロケーター コンテキストを返す必要があります。 外部アロケーターが指定されていない場合は、このパラメーターを NULL に設定する必要があります。

[in, optional] DeleteAllocator

必要に応じて、外部アロケーターに使用される外部アロケーター削除関数が含まれます。 外部アロケーターが指定されていない場合は、このパラメーターを NULL に設定する必要があります。

戻り値

STATUS_SUCCESSを返します。それ以外の場合は、既定のアロケーターの作成エラーに関するエラーを返します。 IRP を完了したり、IRP の状態を設定したりしません。

注釈

このルーチンを呼び出す前に、 KSCREATE_ITEM_IRP_STORAGE(Irp) マクロは、このアロケーターの作成項目である KSOBJECT_CREATE_ITEM 構造体へのポインターを返す必要があります。 KsCreateDefaultAllocatorEx は、このマクロの戻り値を指すように FsContext を設定します。 そのため、 FsContext は、セキュリティ記述子のクエリまたは変更に後で使用できます。

ks.h には、KSCREATE_ITEM_IRP_STORAGE(Irp) と関連するマクロがあります。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib