次の方法で共有


WdfLookasideListCreate 関数 (wdfmemory.h)

[KMDF にのみ適用]

WdfLookasideListCreate メソッドは、ドライバーがメモリ オブジェクトを取得できるルックアサイド リスト オブジェクトを作成します。

構文

NTSTATUS WdfLookasideListCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
  [in]           size_t                 BufferSize,
  [in]           POOL_TYPE              PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [in, optional] ULONG                  PoolTag,
  [out]          WDFLOOKASIDE           *Lookaside
);

パラメーター

[in, optional] LookasideAttributes

新しいルックアサイド リスト オブジェクトのオブジェクト属性を含む WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。

[in] BufferSize

フレームワークが各メモリ オブジェクトに割り当てるバッファーの 0 以外のサイズ (バイト単位)。

[in] PoolType

割り当てるメモリの種類を指定する POOL_TYPE型指定された値。

[in, optional] MemoryAttributes

ドライバーがルックアサイド リストから取得する各メモリ オブジェクトのオブジェクト属性を含む WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。

[in, optional] PoolTag

各メモリ オブジェクトのバッファーのドライバー定義プール タグ。 デバッガーでは、このタグが表示されます。 通常、ドライバーは、一重引用符で区切られた最大 4 文字の文字列を逆の順序 ("dcba" など) で指定します。 タグ内の各文字の ASCII 値は、0 から 127 の間である必要があります。 各プール タグが一意の場合、ドライバーのデバッグが簡単になります。

PoolTag が 0 の場合、フレームワークはドライバーのカーネル モード サービス名の最初の 4 文字を使用する既定のプール タグを提供します。 サービス名が "WDF" で始まる場合 (名前は大文字と小文字が区別されず、引用符は含まれません)、次の 4 文字が使用されます。 使用できる文字数が 4 文字未満の場合は、"FxDr" が使用されます。

KMDF バージョン 1.5 以降では、ドライバーは、WDF_DRIVER_CONFIG 構造体の DriverPoolTag メンバーを使用して、既定のプール タグを指定できます。

[out] Lookaside

新しい lookaside-list オブジェクトへのハンドルを受け取る場所へのポインター。

戻り値

WdfLookasideListCreate 、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_PARAMETER
無効なパラメーターが検出されました。
STATUS_INSUFFICIENT_RESOURCES
メモリが不足していました。
 

WdfLookasideListCreate メソッドが返す可能性があるその他の戻り値の一覧については、「Framework オブジェクト作成エラー」を参照してください。

このメソッドは、他のNTSTATUS 値を返す場合もあります。

注釈

ドライバーが WdfLookasideListCreate 呼び出してルックアサイド リスト オブジェクトを作成した後、ドライバーは WdfMemoryCreateFromLookaside 呼び出してルックアサイド リストからバッファーを取得できます。

既定では、新しい lookaside-list オブジェクトの親は、WdfDriverCreate メソッドによって作成されるフレームワーク ドライバー オブジェクトです。 WDF_OBJECT_ATTRIBUTES 構造体の ParentObject メンバーを使用して、別の親を指定できます。 フレームワークは、親オブジェクトを削除するときに lookaside-list オブジェクトを削除します。 ドライバーが既定の親を変更しない場合、ドライバーは、オブジェクトの使用が完了したときに lookaside-list オブジェクトを削除する必要があります。それ以外の場合、ルックアサイド リスト オブジェクトは、I/O マネージャーがドライバーをアンロードするまで保持されます。

ドライバーが LookasideAttributesMemoryAttributes パラメーターの両方にWDF_OBJECT_ATTRIBUTES構造体を提供する場合、両方の構造体で親オブジェクトとしてデバイス オブジェクトを指定する場合、デバイス オブジェクトハンドルは同じである必要があります。

フレームワーク メモリ オブジェクトとルックアサイド リストの詳細については、「メモリ バッファーの使用」を参照してください。

ドライバーが PoolType パラメーター PagedPool を指定する場合は、IRQL <= APC_LEVEL で WdfLookasideListCreate メソッドを呼び出す必要があります。 それ以外の場合は、IRQL <= DISPATCH_LEVELでメソッドを呼び出すことができます。

例示

WdfLookasideListCreateを使用するコード例については、「WdfMemoryCreateFromLookasideを参照してください。

必要条件

要件 価値
ターゲット プラットフォーム 普遍
最小 KMDF バージョン 1.0
ヘッダー wdfmemory.h (Wdf.h を含む)
図書館 Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL 「解説」セクションを参照してください。
DDI コンプライアンス規則 する DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside