次の方法で共有


WdfMemoryCreateFromLookaside 関数 (wdfmemory.h)

[KMDF にのみ適用]

WdfMemoryCreateFromLookaside メソッドは、フレームワーク メモリ オブジェクトを作成し、指定したルックアサイド リストからメモリ バッファーを取得します。

構文

NTSTATUS WdfMemoryCreateFromLookaside(
  [in]  WDFLOOKASIDE Lookaside,
  [out] WDFMEMORY    *Memory
);

パラメーター

[in] Lookaside

WdfLookasideListCreate を呼び出すことによって取得されるフレームワーク lookaside-list オブジェクトへのハンドル。

[out] Memory

新しいフレームワーク メモリ オブジェクトへのハンドルを受け取る場所へのポインター。

戻り値

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

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

このメソッドは、他の 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)

こちらもご覧ください

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete