WdfLookasideListCreate 関数 (wdfmemory.h)
[KMDF にのみ適用]
WdfLookasideListCreate メソッドは、ドライバーがメモリ オブジェクトを取得できる lookaside-list オブジェクトを作成します。
構文
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
新しい lookaside-list オブジェクトのオブジェクト属性を含む 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を返します。 それ以外の場合、このメソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
無効なパラメーターが検出されました。 |
|
メモリが不足していました。 |
WdfLookasideListCreate メソッドが返す可能性があるその他の戻り値の一覧については、「フレームワーク オブジェクト作成エラー」を参照してください。
このメソッドは、他の NTSTATUS 値を返す場合もあります。
注釈
ドライバーが WdfLookasideListCreate を呼び出してルックアサイド リスト オブジェクトを作成した後、ドライバーは WdfMemoryCreateFromLookaside を呼び出して、ルックアサイド リストからバッファーを取得できます。
既定では、新しい lookaside-list オブジェクトの親は 、WdfDriverCreate メソッドによって作成されるフレームワーク ドライバー オブジェクトです。 WDF_OBJECT_ATTRIBUTES構造体の ParentObject メンバーを使用して、別の親を指定できます。 フレームワークは、親オブジェクトを削除するときに lookaside-list オブジェクトを削除します。 ドライバーが既定の親を変更しない場合、ドライバーは、オブジェクトの使用が完了したときに lookaside-list オブジェクトを削除する必要があります。それ以外の場合、ルックアサイド リスト オブジェクトは、I/O マネージャーがドライバーをアンロードするまで残ります。
ドライバーが LookasideAttributes パラメーターと MemoryAttributes パラメーターの両方にWDF_OBJECT_ATTRIBUTES構造体を提供し、両方の構造体で親オブジェクトとしてデバイス オブジェクトを指定する場合、デバイス オブジェクト ハンドルは同じである必要があります。
フレームワーク メモリ オブジェクトとルックアサイド リストの詳細については、「 メモリ バッファーの使用」を参照してください。
ドライバーで PoolType パラメーターに PagedPool が指定されている場合は、IRQL <= APC_LEVELで WdfLookasideListCreate メソッドを呼び出す必要があります。 それ以外の場合は、IRQL <= DISPATCH_LEVELで メソッドを呼び出すことができます。
例
WdfLookasideListCreate を使用するコード例については、「WdfMemoryCreateFromLookaside」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdfmemory.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | 「解説」を参照してください。 |
DDI コンプライアンス規則 | DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |