[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 呼び出して、メモリ オブジェクトをルックアサイド リストに返す必要があります。
フレームワーク メモリ オブジェクトとルックアサイド リストの詳細については、「メモリ バッファーの使用」を参照してください。
ルックアサイド リスト バッファーがページング可能なメモリ プールから割り当てられている場合は、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 |
| ヘッダー | wdfmemory.h (Wdf.h を含む) |
| 図書館 | Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。 |
| IRQL | 「解説」セクションを参照してください。 |
| DDI コンプライアンス規則 を する | DriverCreate(kmdf) |
こちらもご覧ください
WdfMemoryCreatePreallocated の
WdfObjectDelete の