次の方法で共有


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
Header wdfmemory.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL 任意のレベル
DDI コンプライアンス規則 DriverCreate(kmdf)MemAfterReqCompletedIntIoctlA(kmdf)MemAfterReqCompletedIoctlA(kmdf)MemAfterReqCompletedReadA(kmdf)MemAfterReqCompletedWriteA(kmdf)

こちらもご覧ください

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectContextGetObject