DXGKARG_BUILDPAGINGBUFFER Struktur (d3dkmddi.h)
Die DXGKARG_BUILDPAGINGBUFFER Struktur beschreibt Parameter für den DxgkDdiBuildPagingBuffer** Rückruf, der einen Pagingpuffer für die Verwendung in einem Speicherübertragungsvorgang erstellt.
Syntax
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;
Angehörige
pDmaBuffer
[in/out] Eine virtuelle Adresse für das erste verfügbare Byte im Pagingpuffer. Wenn der Treiber zum ersten Mal mit einem neuen Auslagerungspuffer aufgerufen wird, wird diese virtuelle Adresse auf 4 KB ausgerichtet. Der Treiber packt Vorgänge im Auslagerungspuffer eng ein, bis der Pagingpuffer voll ist und dann einen neuen Pagingpuffer verwendet. Wenn daher die Grafikverarbeitungseinheit (GPU) eine bestimmte Ausrichtung für eine Pagingpufferübermittlung erfordert, sollte der Treiber diese Ausrichtung erzwingen, indem er die Vorgänge auffüllt, die er in den Pagingpuffer schreibt. Bevor die DxgkDdiBuildPagingBuffer--Funktion zurückgegeben wird, sollte der Treiber pDmaBuffer- aktualisieren, um auf das letzte Byte zu zeigen, das in den Pagingpuffer geschrieben wird.
DmaSize
[in/out] Die Größe des Pagingpuffers in Bytes, der pDmaBuffer- angibt.
pDmaBufferPrivateData
[in/out] Ein Zeiger auf eine treiberresidente private Datenstruktur, die dem DMA-Puffer (d. h. paging buffer) zugeordnet ist, der pDmaBuffer- angibt.
DmaBufferPrivateDataSize
[in/out] Die Anzahl der Bytes, die in der privaten Datenstruktur verbleiben, die pDmaBufferPrivateData für den aktuellen Vorgang verweist.
Operation
[in] Ein DXGK_BUILDPAGINGBUFFER_OPERATION-typed-Wert, der den Typ des auszuführenden Speichervorgangs angibt.
MultipassOffset
[in/out] Ein UINT-Wert, der den Fortschritt des Pagingvorgangs angibt, wenn mehrere Pagingpuffer erforderlich sind. Der Treiber legt diesen Wert fest, um eine Aufteilung in mehrere Pagingpuffer für mehrere Übertragungsvorgänge anzugeben. Beispielsweise kann der Treiber die Seitennummer speichern, die zuletzt für eine seitenbasierte Übertragung übertragen wurde.
Transfer
[in] Eine Struktur, die den Übertragungsvorgang beschreibt.
Transfer.hAllocation
[in] Ein Handle für die Zuordnung, die die DxgkDdiCreateAllocation Funktion, die zuvor im hAllocation Member einer DXGK_ALLOCATIONINFO Struktur zurückgegeben wurde, die Teil des pAllocationInfo Member der DXGKARG_CREATEALLOCATION Struktur ist. Der Zuordnungshandle verweist auf einen Puffer, der private Treiberdaten für die Übertragung enthält.
Transfer.TransferOffset
[in] Der Offset in Byte der ersten Seite innerhalb der übertragenen Zuordnung. Dieser Offset wird nur auf eine Position angewendet, die von einer Segmentposition beschrieben wird. Dieser Offset gilt nicht für eine MDL- Beschreibung eines Speicherbereichs. Wenn der Treiber mehr als einen Pagingpuffer benötigt, um die Übertragung abzuschließen (d. h. der Treiber gibt STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER aus seinem DxgkDdiBuildPagingBuffer-Funktion zurück), ist TransferOffset- für jeden Aufruf von DxgkDdiBuildPagingBuffer für diese Übertragung identisch.
Transfer.TransferSize
[in] Die Größe der zu übertragenden Speicherinformationen in Bytes.
Transfer.Source
[in] Eine Struktur, die die Quellzuordnung beschreibt. Diese Struktur enthält eine SegmentId Member und eine Union, die entweder einen Offset in einem Segment der Quellzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL- für die Quelle enthält (pMdl).
Transfer.Source.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Quellzuordnung oder Null, wenn die Quellzuordnung durch das pMdl- Mitglied der Union beschrieben wird, das Source- enthält.
Transfer.Source.SegmentAddress
[in] Die Quellsegmentadresse, wenn das SegmentId-Element Mitglied der Source- ungleich Null ist. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
Transfer.Source.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL- Struktur enthält, die die Systemspeicherseiten für die Quelle beschreibt, wenn das SegmentId-Element von Source null ist.
Transfer.Destination
[in] Eine Struktur, die die Zielzuordnung beschreibt. Diese Struktur enthält eine SegmentId Mitglied und eine Union, die entweder einen Offset in einem Segment der Zielzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL- für das Ziel enthält (pMdl).
Transfer.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielzuordnung oder Null, wenn die Zielzuordnung durch das pMdl- Mitglied der Union beschrieben wird, das Ziel- enthält.
Transfer.Destination.SegmentAddress
[in] Die Zielsegmentadresse, wenn das SegmentId Mitglied des Ziel- ungleich Null ist. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
Transfer.Destination.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL- Struktur enthält, die die Systemspeicherseiten für das Ziel beschreibt, wenn das SegmentId-Element des Ziel- null ist.
Transfer.Flags
[in] Eine DXGK_TRANSFERFLAGS Struktur, die in Bitfeldkennzeichnungen den Typ des auszuführenden speziellen Sperresübertragungsvorgangs identifiziert.
Transfer.MdlOffset
[in] Der Offset in Systemspeicherseiten innerhalb der MDL- Struktur, auf die das pMdl Member verweist, auf die erste Systemspeicherseite für den aktuellen Vorgang. Der Treiber kann die physische Adresse der ersten Systemspeicherseite abrufen, indem die Funktion [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray wie folgt aufgerufen wird.
MmGetMdlPfnArray(pMdl)[MdlOffset];
Fill
[in] Eine Struktur, die den Ausfüllvorgang beschreibt.
Fill.hAllocation
[in] Ein Handle für die Zuteilung, die inhalt enthält, der ausgefüllt werden soll.
Fill.FillSize
[in] Die Größe der zu füllenden Speicherinformationen in Bytes.
Fill.FillPattern
[in] Das Muster, mit dem das Ziel gefüllt werden soll. Der Videospeicher-Manager verwendet diese Informationen, um den Videospeicher auf ein bestimmtes Muster zu initialisieren, wenn eine Zuordnung ohne Inhalt zuerst ausgelagert wird. In diesem Fall ist keine Quelle für die Füllanforderung vorhanden – nur ein Ziel ist vorhanden.
Fill.Destination
[in] Eine Struktur, die die Zielzuordnung für den Ausfüllvorgang beschreibt.
Fill.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielzuordnung.
Fill.Destination.SegmentAddress
[in] Die Zielsegmentadresse. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
DiscardContent
[in] Eine Struktur, die den Verwerfen-Inhaltsvorgang beschreibt.
DiscardContent.hAllocation
[in] Ein Handle für die Zuordnung, die inhalte enthält, die verworfen werden sollen.
DiscardContent.Flags
[in] Eine DXGK_DISCARDCONTENTFLAGS Struktur, die in Bitfeldkennzeichnungen den Typ des auszuführenden Verwerfen-Inhaltsvorgangs identifiziert.
DiscardContent.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zuordnung zum Verwerfen von Inhalten.
DiscardContent.SegmentAddress
[in] Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die Segmentadresse angibt. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
. An diesem Speicherort werden Inhalte verworfen.
ReadPhysical
[in] Eine Struktur, die den read-physical-Vorgang beschreibt.
ReadPhysical.SegmentId
[in] Der Bezeichner eines Segments, aus dem Daten gelesen werden.
ReadPhysical.PhysicalAddress
[in] Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die physische Adresse innerhalb des Segments angibt, das SegmentId angibt, wo die Daten gelesen werden.
WritePhysical
[in] Eine Struktur, die den schreibphysikatik-Vorgang beschreibt.
WritePhysical.SegmentId
[in] Der Bezeichner eines Segments, in das Daten geschrieben werden.
WritePhysical.PhysicalAddress
[in] Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die physische Adresse innerhalb des Segments angibt, das SegmentId angibt, wo die Daten geschrieben werden.
MapApertureSegment
[in] Eine Struktur, die den Map-Blendensegment-Vorgang mithilfe einer MDL beschreibt.
MapApertureSegment.hDevice
[in] Ein Handle für das Gerät, das die Zuordnung besitzt, die hAllocation- angibt, das dem Blendensegment zugeordnet ist, das SegmentId angibt.
Bei einer freigegebenen Zuweisung wird hDevice auf das Gerät festgelegt, das der Videospeicher-Manager als Besitzer der Zuordnung festgelegt hat.
hDevice ist NULL- für die primäre Zuordnung.
MapApertureSegment.hAllocation
[in] Ein Handle zur Zuordnung, die dem Blendensegment zugeordnet ist, das SegmentId angibt.
hAllocation- ist NULL-, wenn ein DMA-Puffer dem Blendensegment zugeordnet wird, da DMA-Puffer nicht explizit vom Treiber erstellt werden.
MapApertureSegment.SegmentId
[in] Der Bezeichner eines zu konfigurierenden Blendensegments.
MapApertureSegment.OffsetInPages
[in] Der Offset in Seiten vom Anfang des Abschnitts bis zu den ersten Seiten, die zugeordnet werden sollen.
MapApertureSegment.NumberOfPages
[in] Die Anzahl der zuzuordnenden Seiten.
MapApertureSegment.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL- Struktur enthält, die die physischen Systemspeicherseiten beschreibt, die dem Blendensegment zugeordnet werden sollen.
MapApertureSegment.Flags
[in] Eine DXGK_MAPAPERTUREFLAGS Struktur, die in Bitfeldkennzeichnungen den Typ des auszuführenden Karten-Blendensegment-Vorgangs identifiziert.
MapApertureSegment.MdlOffset
[in] Der Offset in Systemspeicherseiten innerhalb der MDL- Struktur, auf die das pMdl Member verweist, auf die erste Systemspeicherseite für den aktuellen Vorgang. Der Treiber kann die physische Adresse der ersten Systemspeicherseite abrufen, indem die Funktion [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray wie folgt aufgerufen wird.
MmGetMdlPfnArray(pMdl)[MdlOffset];
UnmapApertureSegment
[in] Eine Struktur, die den Unmap-Blendensegment-Vorgang beschreibt.
UnmapApertureSegment.hDevice
[in] Ein Handle für das Gerät, das die Zuordnung besitzt, die hAllocation- angibt, dass nicht vom Blendensegment zugeordnet ist, das SegmentId angibt.
Bei einer freigegebenen Zuweisung wird hDevice auf das Gerät festgelegt, das der Videospeicher-Manager als Besitzer der Zuordnung festgelegt hat.
hDevice ist NULL- für die primäre Zuordnung.
UnmapApertureSegment.hAllocation
[in] Ein Handle für die Zuordnung, die aus dem Blendensegment nicht zugeordnet ist, das SegmentId angibt.
hAllocation- ist NULL-, wenn ein DMA-Puffer aus dem Blendensegment nicht zugeordnet wird, da DMA-Puffer nicht explizit vom Treiber erstellt werden.
UnmapApertureSegment.SegmentId
[in] Der Bezeichner eines zu konfigurierenden Blendensegments.
UnmapApertureSegment.OffsetInPages
[in] Der Offset in Seiten vom Anfang des Abschnitts bis zu den ersten Seiten, um die Zuordnung aufzuheben.
UnmapApertureSegment.NumberOfPages
[in] Die Anzahl der Zuzuordnenden Seiten.
UnmapApertureSegment.DummyPage
[in] Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die physische Adresse der Platzhalterseite angibt, auf der der Treiber den Bereich zuordnen soll, der nicht zugeordnet ist.
SpecialLockTransfer
[in] Eine Struktur, die den speziellen Sperrübertragungsvorgang beschreibt.
SpecialLockTransfer.hAllocation
[in] Ein Handle für die Zuordnung, die die DxgkDdiCreateAllocation Funktion, die zuvor im hAllocation Member einer DXGK_ALLOCATIONINFO Struktur zurückgegeben wurde, die Teil des pAllocationInfo Member der DXGKARG_CREATEALLOCATION Struktur ist. Der Zuordnungshandle verweist auf einen Puffer, der private Treiberdaten für die spezielle Sperrübertragung enthält.
SpecialLockTransfer.TransferOffset
[in] Der Offset in Byte der ersten Seite innerhalb der übertragenen Zuordnung. Dieser Offset wird nur auf eine Position angewendet, die von einer Segmentposition beschrieben wird. Dieser Offset gilt nicht für eine MDL- Beschreibung eines Speicherbereichs. Wenn der Treiber mehr als einen Pagingpuffer benötigt, um die Übertragung abzuschließen (d. h. der Treiber gibt STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER aus seinem DxgkDdiBuildPagingBuffer-Funktion zurück), ist TransferOffset- für jeden Aufruf von DxgkDdiBuildPagingBuffer für diese Übertragung identisch.
SpecialLockTransfer.TransferSize
[in] Die Größe der zu übertragenden Speicherinformationen in Bytes.
SpecialLockTransfer.Source
[in] Eine Struktur, die die Quellzuordnung beschreibt. Diese Struktur enthält eine SegmentId Member und eine Union, die entweder einen Offset in einem Segment der Quellzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL- für die Quelle enthält (pMdl).
SpecialLockTransfer.Source.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Quellzuordnung oder Null, wenn die Quellzuordnung durch das pMdl- Mitglied der Union beschrieben wird, das Source- enthält.
SpecialLockTransfer.Source. (unbenannte Union)
[in] Eine Vereinigung, die entweder einen Offset in ein Segment der Quellzuordnung enthält (SegmentAddress) oder einen Zeiger auf eine MDL- für die Quelle (pMdl).
SpecialLockTransfer.Source.SegmentAddress
[in] Die Quellsegmentadresse, wenn das SegmentId-Element Mitglied der Source- ungleich Null ist. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
SpecialLockTransfer.Source.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL- Struktur enthält, die die Systemspeicherseiten für die Quelle beschreibt, wenn das SegmentId-Element von Source null ist.
SpecialLockTransfer.Destination
[in] Eine Struktur, die die Zielzuordnung beschreibt. Diese Struktur enthält eine SegmentId Mitglied und eine Union, die entweder einen Offset in einem Segment der Zielzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL- für das Ziel enthält (pMdl).
SpecialLockTransfer.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielzuordnung oder Null, wenn die Zielzuordnung durch das pMdl- Mitglied der Union beschrieben wird, das Ziel- enthält.
SpecialLockTransfer.Destination. (unbenannte Union)
[in] Eine Union, die entweder einen Offset in ein Segment der Zielzuordnung enthält (SegmentAddress) oder einen Zeiger auf eine MDL- für das Ziel (pMdl).
SpecialLockTransfer.Destination.SegmentAddress
[in] Die Zielsegmentadresse, wenn das SegmentId Mitglied des Ziel- ungleich Null ist. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
SpecialLockTransfer.Destination.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL- Struktur enthält, die die Systemspeicherseiten für das Ziel beschreibt, wenn das SegmentId-Element des Ziel- null ist.
SpecialLockTransfer.Flags
[in] Eine DXGK_TRANSFERFLAGS Struktur, die in Bitfeldkennzeichnungen den Typ des auszuführenden speziellen Sperresübertragungsvorgangs identifiziert.
SpecialLockTransfer.SwizzlingRangeId
[in] Ein UINT-Wert, der den Schwarmbereich identifiziert.
SpecialLockTransfer.SwizzlingRangeData
[in] Ein UINT-Wert, der Schwarmbereichsdaten angibt.
InitContextResource
[in] Eine Struktur, die den Kontextinitialisierungsvorgang beschreibt. Wird ab Windows 8 unterstützt.
InitContextResource.hAllocation
[in] Ein Handle für die Kontextzuordnung, die beim Aufrufen des Treibers DxgkCbCreateContextAllocationerstellt wurde. Das Handle für diese Zuordnung wird im hAllocation Member der DXGKARGCB_CREATECONTEXTALLOCATION-Struktur zurückgegeben. Der Treiber übergibt einen Zeiger an diese Struktur im ContextAllocation Parameter, wenn er DxgkCbCreateContextAllocation-aufruft.
InitContextResource.Destination
[in] Eine Struktur, die die Zielkontextzuordnung beschreibt. Diese Struktur enthält eine SegmentId Mitglied und eine Union, die entweder einen Offset in einem Segment der Zielkontextzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL- für das Ziel enthält (pMdl).
InitContextResource.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielkontextzuordnung oder null, wenn die Zielkontextzuordnung durch das pMdl- Mitglied der Union beschrieben wird, das Ziel- enthält.
InitContextResource.Destination. (unbenannte Union)
[in] Eine Union, die entweder einen Offset in ein Segment der Zielkontextzuordnung enthält (SegmentAddress) oder einen Zeiger auf eine MDL- für das Ziel (pMdl).
InitContextResource.Destination.SegmentAddress
[in] Die Zielsegmentadresse, wenn das SegmentId Mitglied des Ziel- ungleich Null ist. Das DirectX-Grafik-Kernel-Subsystem berechnet die Segmentadresse als Summe des Segmentoffsets und die Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
InitContextResource.Destination.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL- Struktur enthält, die die Systemspeicherseiten für das Ziel beschreibt, wenn das SegmentId-Element des Ziel- null ist.
InitContextResource.Destination.VirtualAddress
[in] Die virtuelle Adresse der Zielkontextzuordnung. Diese Adresse ist während der Lebensdauer der Kontextzuweisung gültig.
Befolgen Sie die Verfahren im Abschnitt "Virtuelle Adressen für Zielkontextzuweisungen" des Themas DxgkCbCreateContextAllocation Thema, um sicherzustellen, dass die virtuelle Adresse gültig ist.
InitContextResource.Destination.GpuVirtualAddress
VIRTUELLE GPU-Adresse der Kontextressource, die initialisiert werden soll.
TransferVirtual
Eine DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL Struktur, die den Vorgang beschreibt, der zum Übertragen von Zuordnungsinhalten zwischen Speicherorten im Arbeitsspeicher verwendet wird.
FillVirtual
Eine DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL Struktur, die den Vorgang beschreibt, der zum Ausfüllen einer Zuordnung mit einem Muster verwendet wird.
UpdatePageTable
Eine DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE Struktur, die den Vorgang beschreibt, der zum Aktualisieren einer Seitentabelle verwendet wird.
FlushTlb
Eine DXGK_BUILDPAGINGBUFFER_FLUSHTLB Struktur, die den Vorgang beschreibt, der zum Leeren der Übersetzungs-Look-Aside-Puffer verwendet wird.
CopyPageTableEntries
Eine DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES Struktur, die den Vorgang beschreibt, der zum Kopieren von Seitentabelleneinträgen von einem Speicherort an einen anderen verwendet wird.
UpdateContextAllocation
Eine DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION Struktur, die den Vorgang beschreibt, der zum Aktualisieren des Inhalts eines Kontexts oder einer Gerätezuweisung verwendet wird.
NotifyResidency
Eine DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY Struktur, die einen Änderungsvorgang der Residency-Zuordnung beschreibt.
SignalMonitoredFence
[in] Eine DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE Struktur, die eine GPU-Anweisung beschreibt, um das paging-überwachte Zaunobjekt an den DMA-Puffer zu signalisieren. Verfügbar ab Windows 10, Version 1703 (WDDM 2.2).
MapApertureSegment2
MapApertureSegment2.hDevice
[in] Ein Handle für das Gerät, das die Zuordnung besitzt, die hAllocation- angibt, das dem Blendensegment zugeordnet ist, das SegmentId angibt.
Bei einer freigegebenen Zuweisung wird hDevice auf das Gerät festgelegt, das der Videospeicher-Manager als Besitzer der Zuordnung festgelegt hat.
hDevice ist NULL- für die primäre Zuordnung.
MapApertureSegment2.hAllocation
[in] Der Treiberhandle für die Zuordnung, die dem Blendensegment zugeordnet ist, das SegmentId angibt.
hAllocation- ist NULL-, wenn ein DMA-Puffer dem Blendensegment zugeordnet wird, da DMA-Puffer nicht explizit vom Treiber erstellt werden.
MapApertureSegment2.SegmentId
[in] Der Bezeichner eines zu konfigurierenden Blendensegments.
MapApertureSegment2.OffsetInPages
[in] Der Offset in Seiten vom Anfang des Abschnitts bis zu den ersten Seiten, die zugeordnet werden sollen.
MapApertureSegment2.NumberOfPages
[in] Die Größe des Bereichs, der innerhalb der Zuordnung zugeordnet wird, in Seiten.
MapApertureSegment2.Adl
[in] Eine DXGK_ADL Struktur mit der Adressdeskriptorliste (ADL), die die logischen Adresszuordnungen (Seiten) für den Zuordnungsspeicher beschreibt. Diese ADL kann entweder zusammenhängend oder ein Seitenarray sein; Der Treiber muss beide Fälle verarbeiten können.
MapApertureSegment2.Flags
[in] Eine DXGK_MAPAPERTUREFLAGS Struktur, die in Bitfeldkennzeichnungen den Typ des auszuführenden Karten-Blendensegment-Vorgangs identifiziert.
MapApertureSegment2.AdlOffset
[in] Der Offset innerhalb der ADL- bis zum Anfang des Bereichs der logischen Adressen, die für den aktuellen Vorgang zugeordnet werden, der in Systemspeicherseiten angegeben ist. Wenn es sich bei der ADL um eine zusammenhängende ADL handelt, ist das BasePageNumber Member der ADL die Startadresse eines zusammenhängenden Speicherbereichs. Verwenden Sie andernfalls die Pages Member der ADL für nicht zusammenhängenden Speicher.
MapApertureSegment2.CpuVisibleAddress
Wenn die Zuordnung eines Treibers mit dem MapApertureCpuVisible Flagsatz erstellt wurde, ist CpuVisibleAddress ein Nicht-NULL-Zeiger auf eine vom System zugeordnete virtuelle Adresse für DXGK_OPERATION_MAP_APERTURE_SEGMENT2 Vorgänge. Diese Adresse ist gültig, solange die Zuordnung in das Blendensegment eingeteilt wird und unmittelbar nach dem entsprechenden DXGK_OPERATION_UNMAP_APERTURE_SEGMENT Aufruf der gleichen Zuordnung freigegeben wird.
Wenn MapApertureCpuVisible- nicht angegeben ist, ist CpuVisibleAddress- für DXGK_OPERATION_MAP_APERTURE_SEGMENT2 Vorgänge NULL.
NotifyFenceResidency
MmapMmu
UnmapMmu
NotifyResidency2
NotifyAllocation
Reserved
Dieses Mitglied ist reserviert und sollte nicht verwendet werden.
Reserved.Reserved[64]
Dieses Mitglied ist reserviert und sollte nicht verwendet werden.
hSystemContext
[in] Ein Handle für den Systemkontext für den Auslagerungsvorgang.
DmaBufferGpuVirtualAddress
Ein D3DGPU_VIRTUAL_ADDRESS Datentyp, der die virtuelle Adresse angibt, in der der DMA-Puffer ausgelagert wurde. Wenn die physische Adresse 0 ist, wird der DMA-Puffer nicht korrekt ausgelagert.
DmaBufferWriteOffset
Der aktuelle Vorgangsoffset in Byte vom Anfang des DMA-Puffers.
Bemerkungen
MDL ist in der Dokumentation Windows Driver Model (WDM) definiert.
WDDM-Synchronisierungsklasse:
- Gpu Scheduler-Klasse der ersten Ebene für BuildPagingBuffer Übermittlungstyp.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Wird ab Windows Vista unterstützt. |
Header- | d3dkmddi.h (einschließlich D3dkmddi.h) |
Siehe auch
DXGKARGCB_CREATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL
DXGK_BUILDPAGINGBUFFER_FLUSHTLB
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE
DxgkCbCreateContextAllocation-
[MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray