次の方法で共有


WdfMemoryGetBuffer 関数 (wdfmemory.h)

[KMDF と UMDF に適用]

WdfMemoryGetBuffer メソッドは、指定されたメモリ オブジェクトに関連付けられているバッファーへのポインターを返します。

構文

PVOID WdfMemoryGetBuffer(
  [in]            WDFMEMORY Memory,
  [out, optional] size_t    *BufferSize
);

パラメーター

[in] Memory

フレームワーク メモリ オブジェクトへのハンドル。

[out, optional] BufferSize

メモリ バッファーのサイズ (バイト単位) を受け取る場所へのポインター。 このパラメーターは省略可能であり、NULL できます。

戻り値

WdfMemoryGetBuffer メモリ バッファーへのポインターを返します。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

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

WdfMemoryGetBuffer は、任意の IRQL で呼び出すことができます。

例示

次のコード例は、kmdf_fx2 サンプル ドライバーの EvtUsbTargetPipeReadComplete コールバック関数に基づいています。 この例では、コールバック関数が受け取るメモリ オブジェクトに関連付けられているバッファーを取得します。 この例では、ドライバーが定義したデバイス オブジェクト コンテキスト領域にバッファーからデータをコピーします。

VOID
OsrFxEvtUsbInterruptPipeReadComplete(
    WDFUSBPIPE  Pipe,
    WDFMEMORY  Buffer,
    size_t  NumBytesTransferred,
    WDFCONTEXT  Context
    )
{
    PUCHAR  switchState = NULL;
    WDFDEVICE  device;
    PDEVICE_CONTEXT  pDeviceContext = Context;

    device = WdfObjectContextGetObject(pDeviceContext);
    switchState = WdfMemoryGetBuffer(Buffer, NULL);
    pDeviceContext->CurrentSwitchState = *switchState;
}

必要条件

要件 価値
ターゲット プラットフォーム 普遍
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdfmemory.h (Wdf.h を含む)
図書館 Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL 任意のレベル
DDI コンプライアンス規則 する DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf)

こちらもご覧ください

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectContextGetObject