DXGKARG_BUILDPAGINGBUFFER 結構 (d3dkmddi.h)
DXGKARG_BUILDPAGINGBUFFER 結構描述 DxgkDdiBuildPagingBuffer** 回呼的參數,此回呼會建置分頁緩衝區以用於記憶體傳輸作業。
語法
typedef struct _DXGKARG_BUILDPAGINGBUFFER {
VOID *pDmaBuffer;
UINT DmaSize;
VOID *pDmaBufferPrivateData;
UINT DmaBufferPrivateDataSize;
DXGK_BUILDPAGINGBUFFER_OPERATION Operation;
UINT MultipassOffset;
union {
struct {
HANDLE hAllocation;
UINT TransferOffset;
SIZE_T TransferSize;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Source;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Destination;
DXGK_TRANSFERFLAGS Flags;
UINT MdlOffset;
} Transfer;
struct {
HANDLE hAllocation;
SIZE_T FillSize;
UINT FillPattern;
struct {
UINT SegmentId;
LARGE_INTEGER SegmentAddress;
} Destination;
} Fill;
struct {
HANDLE hAllocation;
DXGK_DISCARDCONTENTFLAGS Flags;
UINT SegmentId;
PHYSICAL_ADDRESS SegmentAddress;
} DiscardContent;
struct {
UINT SegmentId;
PHYSICAL_ADDRESS PhysicalAddress;
} ReadPhysical;
struct {
UINT SegmentId;
PHYSICAL_ADDRESS PhysicalAddress;
} WritePhysical;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
PMDL pMdl;
DXGK_MAPAPERTUREFLAGS Flags;
ULONG MdlOffset;
} MapApertureSegment;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
PHYSICAL_ADDRESS DummyPage;
} UnmapApertureSegment;
struct {
HANDLE hAllocation;
UINT TransferOffset;
SIZE_T TransferSize;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Source;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
} Destination;
DXGK_TRANSFERFLAGS Flags;
UINT SwizzlingRangeId;
UINT SwizzlingRangeData;
} SpecialLockTransfer;
struct {
HANDLE hAllocation;
struct {
UINT SegmentId;
union {
LARGE_INTEGER SegmentAddress;
MDL *pMdl;
};
PVOID VirtualAddress;
D3DGPU_VIRTUAL_ADDRESS GpuVirtualAddress;
} Destination;
} InitContextResource;
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL TransferVirtual;
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL FillVirtual;
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE UpdatePageTable;
DXGK_BUILDPAGINGBUFFER_FLUSHTLB FlushTlb;
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES CopyPageTableEntries;
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION UpdateContextAllocation;
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY NotifyResidency;
DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE SignalMonitoredFence;
struct {
HANDLE hDevice;
HANDLE hAllocation;
UINT SegmentId;
SIZE_T OffsetInPages;
SIZE_T NumberOfPages;
DXGK_ADL Adl;
DXGK_MAPAPERTUREFLAGS Flags;
ULONG AdlOffset;
PVOID CpuVisibleAddress;
} MapApertureSegment2;
DXGK_BUILDPAGINGBUFFER_NOTIFY_FENCE_RESIDENCY NotifyFenceResidency;
DXGK_BUILDPAGINGBUFFER_MAPMMU MmapMmu;
DXGK_BUILDPAGINGBUFFER_UNMAPMMU UnmapMmu;
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY2 NotifyResidency2;
DXGK_BUILDPAGINGBUFFER_NOTIFYALLOC NotifyAllocation;
struct {
UINT Reserved[64];
} Reserved;
};
HANDLE hSystemContext;
D3DGPU_VIRTUAL_ADDRESS DmaBufferGpuVirtualAddress;
UINT DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;
成員
pDmaBuffer
[in/out]分頁緩衝區中第一個可用位元組的虛擬位址。 第一次使用新的分頁緩衝區呼叫驅動程式時,此虛擬位址會對齊 4 KB。 驅動程式會緊密封裝分頁緩衝區中的作業,直到分頁緩衝區已滿,然後使用新的分頁緩衝區。 因此,如果圖形處理單位 (GPU) 需要分頁緩衝區提交的特定對齊方式,驅動程式應該藉由填補寫入分頁緩衝區的作業來強制執行此對齊。 在 DxgkDdiBuildPagingBuffer 函式傳回之前,驅動程式應該更新 pDmaBuffer,以指向寫入分頁緩衝區的最後一個字節。
DmaSize
[in/out] pDmaBuffer 所指定分頁緩衝區的大小,以位元組為單位。
pDmaBufferPrivateData
[in/out]與 DMA) (緩衝區 (直接記憶體存取相關聯的驅動程式駐留私人數據結構的指標,也就是 pDmaBuffer 指定的分頁緩衝區) 。
DmaBufferPrivateDataSize
[in/out] pDmaBufferPrivateData 指向目前作業之私用數據結構中的位元元組數目。
Operation
[in] DXGK_BUILDPAGINGBUFFER_OPERATION型別值,指出要執行的記憶體作業類型。
MultipassOffset
[in/out]UINT 值,指定需要多個分頁緩衝區時分頁作業的進度。 驅動程式會將此值設定為表示分割成多個分頁緩衝區的多個傳輸作業。 例如,驅動程式可以儲存上次針對分頁型傳輸傳送的頁碼。
Transfer
[in]描述傳輸作業的結構。
Transfer.hAllocation
[in]驅動程式的 DxgkDdiCreateAllocation 函式先前在DXGK_ALLOCATIONINFO結構的 hAllocation 成員中傳回的配置句柄,這是DXGKARG_CREATEALLOCATION結構的 pAllocationInfo 成員的一部分。 配置句柄會指向緩衝區,其中包含用於傳輸的私人驅動程序數據。
Transfer.TransferOffset
[in]傳輸之配置內第一頁的位移,以位元組為單位。 此位移只會套用至區段位置所描述的位置。 此位移不適用於記憶體範圍的 MDL 描述。 如果驅動程式需要一個以上的分頁緩衝區才能完成傳輸 (,則驅動程式會從其 DxgkDdiBuildPagingBuffer 函式) 傳回 STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER,TransferOffset 會針對此傳輸的每個 DxgkDdiBuildPagingBuffer 呼叫相同。
Transfer.TransferSize
[in]要傳輸的記憶體資訊大小,以位元組為單位。
Transfer.Source
[in]描述來源配置的結構。 這個結構包含 SegmentId 成員和聯集,其中包含來源配置區段的位移 (SegmentAddress) 或來源 (pMdl) 的 MDL 指標。
Transfer.Source.SegmentId
[in]來源配置內的區段標識符,如果來源配置是由Source包含之等位的 pMdl 成員所描述,則為零。
Transfer.Source.SegmentAddress
[in]如果 Source 的 SegmentId 成員為非零,則來源區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。
Transfer.Source.pMdl
[in]緩衝區的指標,其中包含描述來源系統記憶體頁面的 MDL 結構,如果 Source 的 SegmentId 成員為零。
Transfer.Destination
[in]描述目的地配置的結構。 此結構包含 SegmentId 成員和聯集,其中包含目的地配置區段的位移 (SegmentAddress) ,或目的地 (pMdl) 的 MDL 指標。
Transfer.Destination.SegmentId
[in]目的地配置內的區段標識符,如果目的地配置是由 Destination 包含之聯集的 pMdl 成員所描述,則為零。
Transfer.Destination.SegmentAddress
[in]如果 Destination 的 SegmentId 成員為非零,則為目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。
Transfer.Destination.pMdl
[in]緩衝區的指標,其中包含描述目的地系統記憶體頁面的 MDL 結構,如果 Destination 的 SegmentId 成員為零。
Transfer.Flags
[in]識別位欄位旗標中要執行之特殊鎖定傳輸作業類型的 DXGK_TRANSFERFLAGS 結構。
Transfer.MdlOffset
[in]pMdl 成員指向之 MDL 結構內的系統記憶體分頁中,目前作業的第一個系統記憶體頁面位移。 驅動程式可以藉由呼叫 [MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 函式來取得第一個系統記憶體頁面的實體位址,如下所示。
MmGetMdlPfnArray(pMdl)[MdlOffset];
Fill
[in]描述填滿作業的結構。
Fill.hAllocation
[in]配置句柄,其中包含要填入的內容。
Fill.FillSize
[in]要填滿的記憶體資訊大小,以位元組為單位。
Fill.FillPattern
[in]要填入目的地的模式。 當配置沒有內容時,視訊記憶體管理員會使用此資訊將視訊記憶體初始化為特定模式。 在此情況下,填滿要求沒有任何來源存在,只有目的地存在。
Fill.Destination
[in]結構,描述填滿作業的目的地配置。
Fill.Destination.SegmentId
[in]目的地配置中區段的標識碼。
Fill.Destination.SegmentAddress
[in]目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。
DiscardContent
[in]描述 discard-content 作業的結構。
DiscardContent.hAllocation
[in]包含要捨棄之內容的配置句柄。
DiscardContent.Flags
[in]識別位欄位旗標中要執行之捨棄內容作業類型的 DXGK_DISCARDCONTENTFLAGS 結構。
DiscardContent.SegmentId
[in]配置中要捨棄內容之區段的標識碼。
DiscardContent.SegmentAddress
[in]PHYSICAL_ADDRESS數據類型 (,定義為表示區段位址的LARGE_INTEGER) 。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。 此位置是捨棄內容的來源位置。
ReadPhysical
[in]描述讀取實體作業的結構。
ReadPhysical.SegmentId
[in]讀取數據之區段的標識碼。
ReadPhysical.PhysicalAddress
[in]PHYSICAL_ADDRESS數據類型 (定義為LARGE_INTEGER) ,指出 SegmentId 所指定區段內的實體位址,其中會讀取數據。
WritePhysical
[in]描述寫入實體作業的結構。
WritePhysical.SegmentId
[in]寫入數據之區段的標識碼。
WritePhysical.PhysicalAddress
[in]PHYSICAL_ADDRESS數據類型 (定義為LARGE_INTEGER) ,指出 SegmentId 所指定區段內的實體位址,其中會寫入數據。
MapApertureSegment
[in]結構,描述使用 MDL 的 map-aperture-segment 作業。
MapApertureSegment.hDevice
[in]擁有 hAllocation 所指定配置之裝置的句柄,其會指定對應到 SegmentId 所指定的光圈區段。
針對共用配置, hDevice 會設定為視訊記憶體管理員判斷為配置擁有者的裝置。
hDevice 是主要配置的 NULL 。
MapApertureSegment.hAllocation
[in]對應到 SegmentId 所指定之光圈區段的配置句柄。
當 DMA 緩衝區對應到光圈區段時,hAllocation 為 NULL,因為驅動程式不會明確建立 DMA 緩衝區。
MapApertureSegment.SegmentId
[in]要設定的光圈區段標識碼。
MapApertureSegment.OffsetInPages
[in]從區段開頭到要對應的第一頁的位移,以分頁為單位。
MapApertureSegment.NumberOfPages
[in]要對應的頁數。
MapApertureSegment.pMdl
[in]緩衝區的指標,其中包含描述要對應到光圈區段之實體系統記憶體頁面的 MDL 結構。
MapApertureSegment.Flags
[in]可識別位欄位旗標中要執行的 map-aperture-segment 作業類型的 DXGK_MAPAPERTUREFLAGS 結構。
MapApertureSegment.MdlOffset
[in]pMdl 成員指向之 MDL 結構內的系統記憶體分頁中,目前作業的第一個系統記憶體頁面位移。 驅動程式可以藉由呼叫 [MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray 函式來取得第一個系統記憶體頁面的實體位址,如下所示。
MmGetMdlPfnArray(pMdl)[MdlOffset];
UnmapApertureSegment
[in]描述 unmap-aperture-segment 作業的結構。
UnmapApertureSegment.hDevice
[in]擁有 hAllocation 所指定配置之裝置的句柄,會從 SegmentId 指定的光圈區段取消對應。
針對共用配置, hDevice 會設定為視訊記憶體管理員判斷為配置擁有者的裝置。
hDevice 是主要配置的 NULL 。
UnmapApertureSegment.hAllocation
[in]從 SegmentId 指定的光圈區段取消對應的配置句柄。
當 DMA 緩衝區從光圈區段取消對應時,hAllocation 為 NULL,因為驅動程式不會明確建立 DMA 緩衝區。
UnmapApertureSegment.SegmentId
[in]要設定的光圈區段標識碼。
UnmapApertureSegment.OffsetInPages
[in]從區段開頭到第一頁要取消對應的位移,以分頁為單位。
UnmapApertureSegment.NumberOfPages
[in]要取消對應的頁數。
UnmapApertureSegment.DummyPage
[in]PHYSICAL_ADDRESS數據類型 (定義為LARGE_INTEGER) ,指出驅動程式應該對應未對應的範圍之佔位元頁面的實體位址。
SpecialLockTransfer
[in]描述特殊鎖定傳輸作業的結構。
SpecialLockTransfer.hAllocation
[in]驅動程式的 DxgkDdiCreateAllocation 函式先前在DXGK_ALLOCATIONINFO結構的 hAllocation 成員中傳回的配置句柄,這是DXGKARG_CREATEALLOCATION結構的 pAllocationInfo 成員的一部分。 配置句柄會指向緩衝區,其中包含特殊鎖定傳輸的私人驅動程序數據。
SpecialLockTransfer.TransferOffset
[in]傳輸之配置內第一頁的位移,以位元組為單位。 此位移只會套用至區段位置所描述的位置。 此位移不適用於記憶體範圍的 MDL 描述。 如果驅動程式需要一個以上的分頁緩衝區才能完成傳輸 (,則驅動程式會從其 DxgkDdiBuildPagingBuffer 函式) 傳回 STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER,TransferOffset 會針對此傳輸的每個 DxgkDdiBuildPagingBuffer 呼叫相同。
SpecialLockTransfer.TransferSize
[in]要傳輸的記憶體資訊大小,以位元組為單位。
SpecialLockTransfer.Source
[in]描述來源配置的結構。 這個結構包含 SegmentId 成員和聯集,其中包含來源配置區段的位移 (SegmentAddress) 或來源 (pMdl) 的 MDL 指標。
SpecialLockTransfer.Source.SegmentId
[in]來源配置內的區段標識符,如果來源配置是由Source包含之等位的 pMdl 成員所描述,則為零。
SpecialLockTransfer.Source. (未命名的聯集)
[in]聯集,其中包含來源配置區段的位移 (SegmentAddress) 或來源 (pMdl) 之 MDL 的指標。
SpecialLockTransfer.Source.SegmentAddress
[in]如果 Source 的 SegmentId 成員不是零, 則 來源區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。
SpecialLockTransfer.Source.pMdl
[in]如果 Source 的 SegmentId 成員為零,則為緩衝區的指標,其中包含描述來源系統記憶體頁面的 MDL 結構。
SpecialLockTransfer.Destination
[in]描述目的地配置的結構。 這個結構包含 SegmentId 成員,以及一個等位,其中包含目的地配置區段的位移 (SegmentAddress) 或目的地 (pMdl) 之 MDL 的指標。
SpecialLockTransfer.Destination.SegmentId
[in]目的地配置內的區段標識符,如果目的地配置是由 Destination 所包含之等位的 pMdl 成員所描述,則為零。
SpecialLockTransfer.Destination. (未命名的聯集)
[in]聯集,其中包含目的地配置區段的位移 (SegmentAddress) 或目的地 (pMdl) 的 MDL 指標。
SpecialLockTransfer.Destination.SegmentAddress
[in]如果 Destination 的 SegmentId 成員不是零,則目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。
SpecialLockTransfer.Destination.pMdl
[in]緩衝區的指標,其中包含描述目的地系統記憶體頁面的 MDL 結構,如果 Destination 的 SegmentId 成員為零。
SpecialLockTransfer.Flags
[in] DXGK_TRANSFERFLAGS 結構,可識別要執行的位字段旗標中特殊鎖定傳輸作業的類型。
SpecialLockTransfer.SwizzlingRangeId
[in]識別撥動範圍的UINT值。
SpecialLockTransfer.SwizzlingRangeData
[in]指定撥動範圍數據的 UINT 值。
InitContextResource
[in]描述內容初始化作業的結構。 從 Windows 8 開始支援。
InitContextResource.hAllocation
[in]當驅動程序稱為 DxgkCbCreateContextAllocation 時所建立的內容配置句柄。 此配置的句柄會在結構DXGKARGCB_CREATECONTEXTALLOCATION的 hAllocation 成員中傳回。 驅動程式會在呼叫 DxgkCbCreateContextAllocation 時,在 ContextAllocation 參數中傳遞這個結構的指標。
InitContextResource.Destination
[in]描述目的地內容配置的結構。 這個結構包含 SegmentId 成員,以及包含目的地內容配置區段的位移, (SegmentAddress) 或目的地 (pMdl) 之 MDL 的指標。
InitContextResource.Destination.SegmentId
[in]目的地內容配置內的區段標識符,如果目的地內容配置是由 Destination 所包含之等位的 pMdl 成員所描述,則為零。
InitContextResource.Destination. (未命名的等位)
[in]聯集,其中包含目的地內容配置區段的位移 (SegmentAddress) 或目的地 (pMdl) 的 MDL 指標。
InitContextResource.Destination.SegmentAddress
[in]如果 Destination 的 SegmentId 成員不是零,則目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和,以及區段的基位址: SegmentAddress = SegmentOffset + Segment.BaseAddr
。
InitContextResource.Destination.pMdl
[in]緩衝區的指標,其中包含描述目的地系統記憶體頁面的 MDL 結構,如果 Destination 的 SegmentId 成員為零。
InitContextResource.Destination.VirtualAddress
[in]目的地內容配置的虛擬位址。 此位址在內容配置的存留期間有效。
請遵循 DxgkCbCreateContextAllocation 主題中目的地內容配置的虛擬位址一節中的程式,以確保虛擬位址有效。
InitContextResource.Destination.GpuVirtualAddress
要初始化之內容資源的 GPU 虛擬位址。
TransferVirtual
描述用來在記憶體中位置之間傳輸配置內容的作業 DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL 結構。
FillVirtual
描述用來以模式填滿配置之作業 的DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL 結構。
UpdatePageTable
描述用來更新頁面表之作業 的DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE 結構。
FlushTlb
描述用來排清翻譯待看緩衝區之作業 的DXGK_BUILDPAGINGBUFFER_FLUSHTLB 結構。
CopyPageTableEntries
描述作業的 DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES 結構,會使用將頁面數據表專案從某個位置複製到另一個位置。
UpdateContextAllocation
描述用來更新內容或裝置配置內容的作業 DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION 結構。
NotifyResidency
描述落地配置變更作業 的DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY 結構。
SignalMonitoredFence
[in]描述 GPU 指令的 DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE 結構,可向 DMA 緩衝區發出分頁監視柵欄物件的訊號。 從 Windows 10 版本 1703 (WDDM 2.2) 開始提供。
MapApertureSegment2
MapApertureSegment2.hDevice
[in]擁有 hAllocation 所指定配置之裝置的句柄,指定對應到 SegmentId 所指定的光圈區段。
針對共用配置, hDevice 會設定為視訊記憶體管理員判斷為配置擁有者的裝置。
hDevice 是主要配置的 NULL 。
MapApertureSegment2.hAllocation
[in]Driver handle to the allocation that mapped to the aperture segment segment that SegmentId specifies.
當 DMA 緩衝區對應到光圈區段時,hAllocation 為 NULL,因為驅動程式不會明確建立 DMA 緩衝區。
MapApertureSegment2.SegmentId
[in]要設定的光圈區段標識碼。
MapApertureSegment2.OffsetInPages
[in]從區段開頭到要對應的第一個頁面的位移,以頁面為單位。
MapApertureSegment2.NumberOfPages
[in]分頁中配置內所對應範圍的大小。
MapApertureSegment2.Adl
[in]具有位址描述元清單的 DXGK_ADL 結構, (ADL) ,描述配置記憶體 (頁面) 邏輯地址對應。 這個 ADL 可以是連續或頁面數位列;驅動程式必須能夠處理這兩種情況。
MapApertureSegment2.Flags
[in]可識別位欄位旗標中要執行的 map-aperture-segment 作業類型的 DXGK_MAPAPERTUREFLAGS 結構。
MapApertureSegment2.AdlOffset
[in] ADL 中針對目前作業所對應的邏輯位址範圍開始的位移,在系統記憶體分頁中指定。 如果ADL是連續的ADL,則ADL的 BasePageNumber 成員是連續記憶體範圍的開始位址。 否則,請使用ADL的 Pages 成員進行非連續記憶體。
MapApertureSegment2.CpuVisibleAddress
如果使用 MapApertureCpuVisible 旗標集建立驅動程式的配置, CpuVisibleAddress 是系統對應核心模式虛擬位址的非 Null 指標,用於 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 作業。 只要配置對應到光圈區段,就會在對應 DXGK_OPERATION_UNMAP_APERTURE_SEGMENT 呼叫相同的配置之後立即釋放此位址。
如果未指定 MapApertureCpuVisible,DXGK_OPERATION_MAP_APERTURE_SEGMENT2作業的CpuVisibleAddress 為 NULL。
NotifyFenceResidency
MmapMmu
UnmapMmu
NotifyResidency2
NotifyAllocation
Reserved
此成員是保留的,不應使用。
Reserved.Reserved[64]
此成員是保留的,不應使用。
hSystemContext
[in]分頁作業之系統內容的句柄。
DmaBufferGpuVirtualAddress
D3DGPU_VIRTUAL_ADDRESS數據類型,指出 DMA 緩衝區分頁所在的虛擬位址。 如果實體位址為零,則 DMA 緩衝區無法正確分頁。
DmaBufferWriteOffset
目前作業會從 DMA 緩衝區的開頭位移以位元組為單位。
備註
MDL 定義於 Windows 驅動程式模型 (WDM) 檔中。
WDDM 同步處理類別:
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始支援。 |
標頭 | d3dkmddi.h (include D3dkmddi.h) |
另請參閱
DXGKARGCB_CREATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL
DXGK_BUILDPAGINGBUFFER_FLUSHTLB
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE
[MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray