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)的位移,或來源的 MDL 指標(pMdl)。
Transfer.Source.SegmentId
[in]來源配置內的區段標識符,如果來源配置是由 Source 包含之等位的聯集 pMdl 成員所描述,則為零。
Transfer.Source.SegmentAddress
[in]如果來源區段位址 SegmentIdSource 的成員為非零值,則為來源區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址:SegmentAddress = SegmentOffset + Segment.BaseAddr
。
Transfer.Source.pMdl
[in]緩衝區的指標,其中包含描述來源系統記憶體頁面的 MDL 結構,如果 source Source 的 SegmentId 成員為零。
Transfer.Destination
[in]描述目的地配置的結構。 此結構包含 SegmentId 成員,以及包含目的地配置區段的位移(SegmentAddress)或目的地 MDL 指標(pMdl)。
Transfer.Destination.SegmentId
[in]目的地配置內的區段標識符,如果目的地配置是由 pMdl 所描述,則為零,Destination 包含的等位 成員。
Transfer.Destination.SegmentAddress
[in]如果 SegmentIdDestination 的成員為非零,則目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址:SegmentAddress = SegmentOffset + Segment.BaseAddr
。
Transfer.Destination.pMdl
[in]緩衝區的指標,其中包含描述目的地系統記憶體頁面的 MDL 結構,如果 destination Destination 的 SegmentId 成員為零。
Transfer.Flags
[in]識別位欄位旗標中要執行之特殊鎖定傳輸作業類型的 DXGK_TRANSFERFLAGS 結構。
Transfer.MdlOffset
[in]系統記憶體頁面中的位移,位於 MDL 結構中,pMdl 成員指向的 結構,指向目前作業的第一個系統記憶體頁面。 驅動程式可以呼叫 [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]描述捨棄內容作業的結構。
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 的地圖孔徑區段作業。
MapApertureSegment.hDevice
[in]擁有 hAllocation 配置之裝置的句柄,指定對應到 SegmentId 指定的光圈區段。
針對共用配置,hDevice 會設定為視訊記憶體管理員判定為配置擁有者的裝置。
hDevice 主要配置 NULL。
MapApertureSegment.hAllocation
[in]配置句柄,對應到 SegmentId 指定的光圈區段。
當 DMA 緩衝區對應到光圈區段時,hAllocationNULL,因為驅動程式不會明確建立 DMA 緩衝區。
MapApertureSegment.SegmentId
[in]要設定的光圈區段標識碼。
MapApertureSegment.OffsetInPages
[in]從區段開頭到要對應的第一頁的位移,以分頁為單位。
MapApertureSegment.NumberOfPages
[in]要對應的頁數。
MapApertureSegment.pMdl
[in]緩衝區的指標,其中包含 MDL 結構,描述要對應到光圈區段的實體系統記憶體頁面。
MapApertureSegment.Flags
[in]識別位字段旗標中要執行的地圖-光圈線段作業類型的 DXGK_MAPAPERTUREFLAGS 結構。
MapApertureSegment.MdlOffset
[in]系統記憶體頁面中的位移,位於 MDL 結構中,pMdl 成員指向的 結構,指向目前作業的第一個系統記憶體頁面。 驅動程式可以呼叫 [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 緩衝區從光圈區段取消對應時,hAllocationNULL,因為驅動程式不會明確建立 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)的位移,或來源的 MDL 指標(pMdl)。
SpecialLockTransfer.Source.SegmentId
[in]來源配置內的區段標識符,如果來源配置是由 Source 包含之等位的聯集 pMdl 成員所描述,則為零。
SpecialLockTransfer.Source。( 未命名的聯集 )
[in]聯集,包含來源配置區段的位移(SegmentAddress),或來源之 MDL 指標(pMdl)。
SpecialLockTransfer.Source.SegmentAddress
[in]如果來源區段位址 SegmentIdSource 的成員為非零值,則為來源區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址:SegmentAddress = SegmentOffset + Segment.BaseAddr
。
SpecialLockTransfer.Source.pMdl
[in]緩衝區的指標,其中包含描述來源系統記憶體頁面的 MDL 結構,如果 source Source 的 SegmentId 成員為零。
SpecialLockTransfer.Destination
[in]描述目的地配置的結構。 此結構包含 SegmentId 成員,以及包含目的地配置區段的位移(SegmentAddress)或目的地 MDL 指標(pMdl)。
SpecialLockTransfer.Destination.SegmentId
[in]目的地配置內的區段標識符,如果目的地配置是由 pMdl 所描述,則為零,Destination 包含的等位 成員。
SpecialLockTransfer.Destination。( 未命名的聯集 )
[in]聯集,包含目的地配置區段的位移(SegmentAddress),或目的地的 MDL 指標(pMdl)。
SpecialLockTransfer.Destination.SegmentAddress
[in]如果 SegmentIdDestination 的成員為非零,則目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址:SegmentAddress = SegmentOffset + Segment.BaseAddr
。
SpecialLockTransfer.Destination.pMdl
[in]緩衝區的指標,其中包含描述目的地系統記憶體頁面的 MDL 結構,如果 destination 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)或目的地之 MDL 指標(pMdl)。
InitContextResource.Destination.SegmentId
[in]目的地內容配置內的區段標識符,如果目的地內容配置是由 Destination 包含之等位的聯集 pMdl 成員所描述,則為零。
InitContextResource.Destination。( 未命名的聯集 )
[in]聯集,包含目的地內容配置區段的位移(SegmentAddress),或目的地的 MDL 指標(pMdl)。
InitContextResource.Destination.SegmentAddress
[in]如果 SegmentIdDestination 的成員為非零,則目的地區段位址。 DirectX 圖形核心子系統會將區段位址計算為區段位移的總和和,以及區段的基位址:SegmentAddress = SegmentOffset + Segment.BaseAddr
。
InitContextResource.Destination.pMdl
[in]緩衝區的指標,其中包含描述目的地系統記憶體頁面的 MDL 結構,如果 destination 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]DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE 結構,描述 GPU 指令,以向 DMA 緩衝區發出分頁監視的柵欄物件訊號。 從 Windows 10 版本 1703 開始提供 (WDDM 2.2)。
MapApertureSegment2
MapApertureSegment2.hDevice
[in]擁有 hAllocation 配置之裝置的句柄,指定對應到 SegmentId 指定的光圈區段。
針對共用配置,hDevice 會設定為視訊記憶體管理員判定為配置擁有者的裝置。
hDevice 主要配置 NULL。
MapApertureSegment2.hAllocation
[in]對應到 segmentId segmentId 指定之配置的驅動程式句柄。
當 DMA 緩衝區對應到光圈區段時,hAllocationNULL,因為驅動程式不會明確建立 DMA 緩衝區。
MapApertureSegment2.SegmentId
[in]要設定的光圈區段標識碼。
MapApertureSegment2.OffsetInPages
[in]從區段開頭到要對應的第一頁的位移,以分頁為單位。
MapApertureSegment2.NumberOfPages
[in]配置中要對應之範圍的大小,以頁面為單位。
MapApertureSegment2.Adl
[in]具有位址描述項清單 (ADL) 的 DXGK_ADL 結構,描述配置記憶體的邏輯地址對應(pages)。 此 ADL 可以是連續或頁面數位列;驅動程式必須能夠處理這兩個案例。
MapApertureSegment2.Flags
[in]識別位字段旗標中要執行的地圖-光圈線段作業類型的 DXGK_MAPAPERTUREFLAGS 結構。
MapApertureSegment2.AdlOffset
[in]ADL 內的位移 到系統記憶體頁面中指定之目前作業所對應之邏輯位址範圍的開頭。 如果 ADL 是連續的 ADL,則 ADL 的 BasePageNumber 成員是連續記憶體範圍的開始位址。 否則,請使用ADL的 Pages 成員進行非連續記憶體。
MapApertureSegment2.CpuVisibleAddress
如果驅動程式的配置是使用 MapApertureCpuVisible 旗標設定而建立,CpuVisibleAddress 是系統對應、內核模式虛擬位址 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 作業的非 Null 指標。 只要配置對應到光圈區段,而且會在對應 DXGK_OPERATION_UNMAP_APERTURE_SEGMENT 呼叫相同的配置之後立即釋放此地址,這個位址就會有效。
如果未指定 mapApertureCpuVisible ,cpuVisibleAddress 為 NULL 以進行 DXGK_OPERATION_MAP_APERTURE_SEGMENT2 作業。
NotifyFenceResidency
MmapMmu
UnmapMmu
NotifyResidency2
NotifyAllocation
Reserved
這個成員是保留的,不應使用。
Reserved.Reserved[64]
這個成員是保留的,不應使用。
hSystemContext
[in]分頁作業之系統內容的句柄。
DmaBufferGpuVirtualAddress
D3DGPU_VIRTUAL_ADDRESS 數據類型,指出 DMA 緩衝區分頁所在的虛擬位址。 如果實體位址為零,DMA 緩衝區就不會正確分頁。
DmaBufferWriteOffset
DMA 緩衝區開頭的目前作業位移,以位元組為單位。
言論
MDL 定義於 Windows 驅動程式模型 (WDM) 檔中。
WDDM 同步處理類別:
- BuildPagingBuffer 提交類型的第一層 GPU 排程器類別。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows Vista 開始支援。 |
標頭 | d3dkmddi.h (包括 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