次の方法で共有


DXGK_SEGMENTDESCRIPTOR3 構造体 (d3dkmddi.h)

DXGK_SEGMENTDESCRIPTOR3構造体には、BIOS 予約メモリ (低電力状態への移行中に消去される) とドライバー予約メモリの両方で構成されるドライバーでサポートされるセグメントに関する情報が含まれています。

構文

typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
  [out] DXGK_SEGMENTFLAGS Flags;
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
        SIZE_T            SystemMemoryEndAddress;
        SIZE_T            Reserved;
} DXGK_SEGMENTDESCRIPTOR3;

メンバー

[out] Flags

セグメント のプロパティ をビット フィールド フラグで識別するDXGK_SEGMENTFLAGS構造体。

AGP タイプの絞りセグメントの場合、ドライバーは、DXGK_SEGMENTFLAGSに含まれる共用体の構造体の Agp メンバーを排他的に設定する必要があることに注意してください。 AGP タイプの絞りセグメントは絞りであり、CPU からアクセスできますが、他のメンバーが設定されている場合、アダプターは初期化に失敗します。

[out] BaseAddress

グラフィックス処理装置 (GPU) によって決定されるセグメントのベース アドレス。 セグメント内でビデオ メモリ マネージャーがページングした割り当ての物理アドレスには、 BaseAddress で指定されたベース アドレスからオフセットされた GPU アドレスが割り当てられます。

ビデオ メモリ マネージャーは、AGP タイプの絞りセグメント (フラグ メンバーでAgp ビット フィールド フラグが指定されている) のベース アドレスを無視し、代わりに、GPU が配置されているバスで決定された AGP アパーチャ内のセグメントの実際の物理アドレスを使用します。 この状況では、ドライバーは、変換を必要とせずに、割り当てのためにビデオ メモリ マネージャーが直接生成したアドレスを使用できます。

[out] CpuTranslatedAddress

GPU が接続されているバスを基準としたセグメントのベース アドレス。 たとえば、GPU が PCI バスに接続されている場合、 CpuTranslatedAddress は、PCI ベース アドレス レジスタ (BAR) で指定された使用可能な範囲のベース アドレスです。 ドライバーは、フラグ メンバーで CpuVisible ビット フィールド フラグを設定することによって、CPU アクセス可能なセグメントを指定する場合にのみ、このアドレスを指定します。

このメンバーは、AGP タイプの絞りセグメントを含む絞りセグメントでは無視されます。 唯一の例外は、ユーザー モードのディスプレイ ドライバーがプライマリ割り当ての代替仮想アドレスを設定していない場合 (つまり、pfnLockCb 関数の呼び出し中に、D3DDDICB_LOCKFLAGS構造体の Flags メンバーでドライバーが UseAlternateVA を設定していない場合) に発生します。

ビデオ メモリ マネージャーが仮想アドレスを物理範囲にマップする前に、ビデオ メモリ マネージャーはバスの CPU ビューに基づいてこの物理アドレスを変換し、ドライバーが指定した場所にあるセグメントのコンテンツにアクセスするための絞りを設定できるように、操作についてドライバーに通知します。

[out] Size

セグメントのサイズ (バイト単位)。 このサイズは、ネイティブ ホスト ページ サイズの倍数である必要があります (たとえば、x86 アーキテクチャでは 4 KB)。

AGP タイプの絞りセグメント (フラグ メンバーでAgp ビット フィールド フラグが指定されている場合) の場合、ビデオ メモリ マネージャーはできるだけ多くの開口領域を割り当てるので、このメンバーは無視されます。

[out] NbOfBanks

銀行取引が使用されている場合 (つまり、 UseBanking ビット フィールド フラグが Flags メンバーに設定されている場合) セグメント内のバンクの数。

[out] pBankRangeTable

セグメント内の各バンクを区切る範囲を示す値の配列。 ドライバーは、フラグ メンバーの UseBanking ビット フィールド フラグも設定する場合にのみ、この配列を指定します。

配列は 、NbOfBanks番目のバンクを通る最初のバンクの終了アドレス (つまり、各バンクのセグメントへの終了オフセット) を指定します。 次のことを考慮してください。

  • 銀行は連続しています。

  • 最初の銀行は、セグメントのオフセット 0 から始まります。

  • 最後の銀行はセグメントの末尾で終了するため、ドライバーは最後の銀行の終了アドレスを指定する必要はありません。

[out] CommitLimit

セグメントにコミットできる最大バイト数。 メモリ セグメントの場合、コミットの制限は常に、 Size メンバーで指定されているセグメントのサイズと同じです。 絞りセグメントの場合、ドライバーは、物理メモリの量が少ないシステム上のセグメントにコミットできるメモリの量を制限できます。

SystemMemoryEndAddress

システム メモリで部分的に構成されるセグメントの場合、このアドレスの後で開始されるすべての割り当ては、休止状態に移行して消去されます。 セグメント アドレスが SystemMemoryEndAddress 以下であるシステム メモリに完全に存在する割り当ては、この遷移では削除されません。

セグメントが休止状態への移行で部分的に保持されている場合、ディスプレイ ミニポート ドライバーは、このメンバーを NULL 以外の値に設定する必要があります。その場合、DXGK_SEGMENTFLAGS構造体の PartiallyPreservedDuringHibernate メンバーを設定する必要があります。

ドライバー予約メモリは、セグメント アドレス 0 から SystemMemoryEndAddress まで実行されます (両端を含む)。 BIOS 予約済みメモリは、 (SystemMemoryEndAddress+1) からセグメントの末尾まで実行されます。

Reserved

このメンバーは予約されており、0 に設定する必要があります。

注釈

この構造体は、WDDM 1.2 以降のカーネル モードディスプレイ ミニポート ドライバーによって使用され、グラフィックス サブシステムがDXGKARG_QUERYADAPTERINFO構造体のType メンバーのDXGKQAITYPE_QUERYSEGMENT3値を指定する DxgkDdiQueryAdapterInfo 関数呼び出しに応答してメモリ セグメントに関する情報を返します。

この構造体は、DXGK_QUERYSEGMENTOUT3構造体の pSegmentDescriptor メンバーによって指されます。

要件

要件
サポートされている最小のクライアント Windows 8
サポートされている最小のサーバー Windows Server 2012
Header d3dkmddi.h

こちらもご覧ください

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_QUERYSEGMENTOUT3

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo