次の方法で共有


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

このコールバック関数は、ドメイン共通バッファーのメモリを割り当てます。

構文

PALLOCATE_DOMAIN_COMMON_BUFFER PallocateDomainCommonBuffer;

NTSTATUS PallocateDomainCommonBuffer(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in]           HANDLE DomainHandle,
  [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,
  [out]          PVOID *VirtualAddress
)
{...}

パラメーター

[in] DmaAdapter

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

[in] DomainHandle

呼び出し元が前の呼び出しから取得した DMA ドメインへのハンドル PGET_DMA_DOMAIN

[in, optional] MaximumAddress

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

[in] Length

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

[in] Flags

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

使用可能な値は次のとおりです。

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

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

[in, optional] CacheType

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

[in] PreferredNode

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

[out] LogicalAddress

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

[out] VirtualAddress

このルーチンが割り当てられたバッファーの対応する仮想アドレスを書き込む変数へのポインター。

戻り値

呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、NTSTATUS 値 適切なを返します。

必要条件

要件 価値
サポートされる最小クライアント Windows 10
ヘッダー wdm.h (Wdm.h を含む)
IRQL PASSIVE_LEVEL