次の方法で共有


PALLOCATE_COMMON_BUFFER_WITH_BOUNDS コールバック関数 (wdm.h)

このコールバック関数は、共通バッファーにメモリを割り当て、マスター デバイスと CPU からアクセスできるようにマップします。 共通バッファーは、省略可能な最小および最大論理アドレスによってバインドできます。

構文

PALLOCATE_COMMON_BUFFER_WITH_BOUNDS PallocateCommonBufferWithBounds;

PVOID PallocateCommonBufferWithBounds(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in, optional] PPHYSICAL_ADDRESS MinimumAddress,
  [in, optional] PPHYSICAL_ADDRESS MaximumAddress,
  [in]           ULONG Length,
  [in]           ULONG Flags,
  [in, optional] MEMORY_CACHING_TYPE *CacheType,
  [in]           NODE_REQUIREMENT PreferredNode,
  [out]          PPHYSICAL_ADDRESS LogicalAddress
)
{...}

パラメーター

[in] DmaAdapter

DMA_ADAPTER構造体へのポインター。 この構造体は、ドライバーのバス マスター DMA デバイスまたはシステム DMA チャネルを表すアダプター オブジェクトです。 呼び出し元は、 IoGetDmaAdapter ルーチンの以前の呼び出しからこのポインターを取得しました。

[in, optional] MinimumAddress

共通バッファーの最小論理アドレスを含む変数へのポインター。 このパラメーターは、このアドレス以上のメモリからバッファーを割り当てる必要があることを示します。 このパラメーターは省略可能であり、NULL として指定して、最小アドレスがないことを示すことができます。

[in, optional] MaximumAddress

共通バッファーの最大論理アドレスを含む変数へのポインター。 このパラメーターは、このアドレスより下のメモリからバッファーを割り当てる必要があることを示します。 このパラメーターは省略可能であり、最大アドレスがないことを示すために NULL として指定できます。

[in] Length

DMA 操作に割り当てられる共通バッファーのサイズ (バイト単位)。

[in] Flags

DMA 操作に割り当てられる共通バッファーのサイズ (バイト単位)。

フラグ 説明
DOMAIN_COMMON_BUFFER_LARGE_PAGE 共通バッファーは、PAGE_SIZE * 512 のより大きなページ細分性を使用して割り当てられます。 これにより、割り当てが失敗する可能性が高くなる可能性があることに注意してください。

[in, optional] CacheType

ルーチン が割 り当てられる共通バッファー内のキャッシュされたメモリを有効または無効にする必要があるかどうかを示すMEMORY_CACHING_TYPE列挙へのポインター。 MmNonCachedMmCached の値のみがサポートされます。 パラメーターは省略可能であり、キャッシュがハードウェア プラットフォームの既定値に依存することを指定するには NULL として指定できます。

[in] PreferredNode

メモリの割り当て元となる優先 NUMA ノード。 N がマルチプロセッサ システム内の NUMA ノードの数である場合、 PreferredNode は 0 ~ N - 1 の範囲の数値です。 1 プロセッサ システムまたは NUMA 以外のマルチプロセッサ システムの場合は、 PreferredNode を 0 に設定します。

[out] LogicalAddress

このルーチンが共通バッファーにアクセスするためにデバイスが使用できる論理アドレスを書き込む変数へのポインター。 DMA デバイスでは、 MmGetPhysicalAddress などのルーチンによって返される物理アドレスではなく、この論理アドレスを使用する必要があります。

戻り値

共通バッファーに割り当てられたメモリの仮想アドレスである PVOID を返します。 バッファーを割り当てることができない場合は、NULL を返します。

注釈

このコールバック関数は、 PALLOCATE_COMMON_BUFFER_EX ルーチンの拡張バージョンです。 次の一覧は、拡張バージョンでのみ使用できる機能をまとめたものです。

  • 呼び出し元は、割り当てる共通バッファーの最小論理アドレスを指定できます。

  • 呼び出し元は、ハードウェア プラットフォームに関係なく従うキャッシュ型のオーバーライドを提供できます。

  • 呼び出し元は、共通バッファー割り当てに対してより大きな粒度の使用を指定できます。

要件

要件
サポートされている最小のクライアント Windows 10 バージョン 1803
対象プラットフォーム デスクトップ
Header wdm.h (Wdm.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

DMA_OPERATIONS

PALLOCATE_COMMON_BUFFER_EX