WdfMemoryCreateFromLookaside 関数 (wdfmemory.h)
[KMDF にのみ適用]
WdfMemoryCreateFromLookaside メソッドは、フレームワーク メモリ オブジェクトを作成し、指定したルックアサイド リストからメモリ バッファーを取得します。
構文
NTSTATUS WdfMemoryCreateFromLookaside(
[in] WDFLOOKASIDE Lookaside,
[out] WDFMEMORY *Memory
);
パラメーター
[in] Lookaside
WdfLookasideListCreate を呼び出すことによって取得されるフレームワーク lookaside-list オブジェクトへのハンドル。
[out] Memory
新しいフレームワーク メモリ オブジェクトへのハンドルを受け取る場所へのポインター。
戻り値
操作が成功した場合、WdfMemoryCreateFromLookaside はSTATUS_SUCCESSを返します。 それ以外の場合、このメソッドは次のいずれかの値を返します。
リターン コード | 説明 |
---|---|
|
無効なパラメーターが検出されました。 |
|
メモリが不足していました。 |
このメソッドは、他の NTSTATUS 値を返す場合もあります。
ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。
注釈
ドライバーが WdfLookasideListCreate を呼び出してルックアサイド リスト オブジェクトを作成した後、ドライバーは WdfMemoryCreateFromLookaside を呼び出して、ルックアサイド リストからバッファーを取得できます。
フレームワークは、バッファーを表すメモリ オブジェクトへのハンドルを提供します。 フレームワークは、メモリ オブジェクトを作成するときに、 WdfMemoryCreateFromLookaside を呼び出したときにドライバーが指定したオブジェクト属性を使用します。
ドライバーがルックアサイド リストから取得したメモリ オブジェクトの使用が完了したら、ドライバーは WdfObjectDelete を呼び出してメモリ オブジェクトをルックアサイド リストに返す必要があります。
フレームワーク メモリ オブジェクトとルックアサイド リストの詳細については、「 メモリ バッファーの使用」を参照してください。
ページ可能メモリ プールから lookaside-list バッファーが割り当てられている場合は、IRQL <= APC_LEVELで WdfMemoryCreateFromLookaside メソッドを呼び出す必要があります。 それ以外の場合は、IRQL <= DISPATCH_LEVEL でメソッドを呼び出すことができます。
例
次のコード例では、ルックアサイド リストを作成し、ドライバー定義のデバイス オブジェクト コンテキスト空間にリストのハンドルを格納します。 次に、ドライバーはルックアサイド リストからバッファーを取得します。
PDRIVER_CONTEXT driverContext;
WDFMEMORY memHandle;
driverContext = GetDriverContext(driver);
status = WdfLookasideListCreate(
WDF_NO_OBJECT_ATTRIBUTES,
sizeof(MY_LOOKASIDE_BUFFER),
NonPagedPool,
WDF_NO_OBJECT_ATTRIBUTES,
MY_POOL_TAG,
&driverContext->LookasideListHandle
);
...
status = WdfMemoryCreateFromLookaside(
driverContext->LookasideListHandle,
&memHandle
);
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
Header | wdfmemory.h (Wdf.h を含む) |
Library | Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。 |
IRQL | 「解説」を参照してください。 |
DDI コンプライアンス規則 | DriverCreate(kmdf) |