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;
Member
pDmaBuffer
[in/out] Eine virtuelle Adresse für das erste verfügbare Byte im Pagingpuffer. Wenn der Treiber zum ersten Mal mit einem neuen Pagingpuffer aufgerufen wird, wird diese virtuelle Adresse auf 4 KB ausgerichtet. Der Treiber packt Vorgänge eng in den Pagingpuffer, bis der Pagingpuffer voll ist, und verwendet dann einen neuen Pagingpuffer. Wenn die Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) eine bestimmte Ausrichtung für eine Pagingpufferübermittlung erfordert, sollte der Treiber diese Ausrichtung daher 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 so aktualisieren, dass er auf das letzte Byte verweist, das in den Pagingpuffer geschrieben wurde.
DmaSize
[in/out] Die Größe des von pDmaBuffer angegebenen Pagingpuffers in Bytes.
pDmaBufferPrivateData
[in/out] Ein Zeiger auf eine treiberresidente private Datenstruktur, die dem DMA-Puffer (Direct Memory Access) (d. h. Pagingpuffer) zugeordnet ist, den pDmaBuffer angibt.
DmaBufferPrivateDataSize
[in/out] Die Anzahl der Bytes, die in der privaten Datenstruktur verbleiben, auf die pDmaBufferPrivateData für den aktuellen Vorgang verweist.
Operation
[in] Ein DXGK_BUILDPAGINGBUFFER_OPERATION typisierter 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 Seitenzahl 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 des Treibers zuvor im hAllocation-Member einer DXGK_ALLOCATIONINFO-Struktur zurückgegeben hat, die Teil des pAllocationInfo-Elements der DXGKARG_CREATEALLOCATION-Struktur ist. Das Zuordnungshandle verweist auf einen Puffer, der private Treiberdaten für die Übertragung enthält.
Transfer.TransferOffset
[in] Der Offset der ersten Seite innerhalb der übertragenen Zuordnung in Byte. Dieser Offset wird nur auf eine Position angewendet, die von einem Segmentstandort 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 von seiner 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 einen SegmentId-Member und eine Union, die entweder einen Offset in ein Segment der Quellzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für die Quelle (pMdl) enthält.
Transfer.Source.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Quellzuordnung oder null, wenn die Quellzuordnung vom pMdl-Member der Union beschrieben wird, die Source enthält.
Transfer.Source.SegmentAddress
[in] Die Quellsegmentadresse, wenn das SegmentId-Element von Source ungleich null ist. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der 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 einen SegmentId-Member und eine Union, die entweder einen Offset in ein Segment der Zielzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für das Ziel (pMdl) enthält.
Transfer.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielzuordnung oder null, wenn die Zielzuordnung vom pMdl-Element der Union beschrieben wird, die Destination enthält.
Transfer.Destination.SegmentAddress
[in] Die Zielsegmentadresse, wenn das SegmentId-Element von Destination ungleich null ist. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der 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 von Destination null ist.
Transfer.Flags
[in] Eine DXGK_TRANSFERFLAGS-Struktur , die in Bitfeldflags den Typ des auszuführenden Sondersperrungsvorgangs identifiziert.
Transfer.MdlOffset
[in] Der Offset in Systemspeicherseiten innerhalb der MDL-Struktur , auf die der pMdl-Member verweist, auf die erste Systemspeicherseite für den aktuellen Vorgang. Der Treiber kann die physische Adresse der ersten Systemspeicherseite abrufen, indem er die Funktion [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray wie folgt aufruft.
MmGetMdlPfnArray(pMdl)[MdlOffset];
Fill
[in] Eine -Struktur, die den Füllvorgang beschreibt.
Fill.hAllocation
[in] Ein Handle für die Zuordnung, das den zu füllenden Inhalt enthält.
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 mit einem bestimmten Muster zu initialisieren, wenn zuerst eine Zuordnung ohne Inhalt ausgelagert wird. In diesem Fall ist keine Quelle für die Füllanforderung vorhanden, es ist nur ein Ziel vorhanden.
Fill.Destination
[in] Eine Struktur, die die Zielzuordnung für den Füllvorgang beschreibt.
Fill.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielzuordnung.
Fill.Destination.SegmentAddress
[in] Die Zielsegmentadresse. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
.
DiscardContent
[in] Eine -Struktur, die den Vorgang "discard-content" beschreibt.
DiscardContent.hAllocation
[in] Ein Handle für die Zuordnung, das den zu verwerfenden Inhalt enthält.
DiscardContent.Flags
[in] Eine DXGK_DISCARDCONTENTFLAGS-Struktur , die in Bitfeldflags den Typ des auszuführenden Vorgangs "discard-content" identifiziert.
DiscardContent.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zuordnung, aus der Inhalte verworfen werden sollen.
DiscardContent.SegmentAddress
[in] Ein PHYSICAL_ADDRESS Datentyp (der als LARGE_INTEGER definiert ist), der die Segmentadresse angibt. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der Basisadresse des Segments: SegmentAddress = SegmentOffset + Segment.BaseAddr
. An diesem Speicherort werden Inhalte verworfen.
ReadPhysical
[in] Eine -Struktur, die den schreib-physischen 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 von SegmentId angegebenen Segments angibt, in dem die Daten gelesen werden.
WritePhysical
[in] Eine -Struktur, die den schreib-physischen 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 von SegmentId angegebenen Segments angibt, in das die Daten geschrieben werden.
MapApertureSegment
[in] Eine -Struktur, die den Map-Aperture-Segment-Vorgang mithilfe einer MDL beschreibt.
MapApertureSegment.hDevice
[in] Ein Handle für das Gerät, das die Zuordnung besitzt, die hAllocation angibt, die dem von SegmentId angegebenen Blendensegment zugeordnet wird.
Bei einer freigegebenen Zuordnung 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 für die Zuordnung, die dem von SegmentId angegebenen Blendensegment zugeordnet ist.
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 Segments bis zu den ersten zuzuordnenden Seiten.
MapApertureSegment.NumberOfPages
[in] Die Anzahl der zu zuordnenden Seiten.
MapApertureSegment.pMdl
[in] Ein Zeiger auf einen Puffer, der die MDL-Struktur enthält, die die Speicherseiten des physischen Systems beschreibt, die dem Blendensegment zugeordnet werden sollen.
MapApertureSegment.Flags
[in] Eine DXGK_MAPAPERTUREFLAGS-Struktur , die in Bitfeldflags den Typ des auszuführenden Map-aperture-segment-Vorgangs identifiziert.
MapApertureSegment.MdlOffset
[in] Der Offset in Systemspeicherseiten innerhalb der MDL-Struktur , auf die der pMdl-Member verweist, auf die erste Systemspeicherseite für den aktuellen Vorgang. Der Treiber kann die physische Adresse der ersten Systemspeicherseite abrufen, indem er die Funktion [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray wie folgt aufruft.
MmGetMdlPfnArray(pMdl)[MdlOffset];
UnmapApertureSegment
[in] Eine -Struktur, die den Vorgang unmap-aperture-segment beschreibt.
UnmapApertureSegment.hDevice
[in] Ein Handle für das Gerät, das die Zuordnung besitzt, die hAllocation angibt, die dem von SegmentId angegebenen Blendensegment nicht zugeordnet ist.
Bei einer freigegebenen Zuordnung 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 von SegmentId angegebenen Blendensegment nicht zugeordnet ist.
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 Segments bis zu den ersten Seiten, die die Zuordnung aufheben sollen.
UnmapApertureSegment.NumberOfPages
[in] Die Anzahl der Seiten, die die Zuordnung aufheben sollen.
UnmapApertureSegment.DummyPage
[in] Ein PHYSICAL_ADDRESS Datentyp (definiert als LARGE_INTEGER), der die physische Adresse der Platzhalterseite angibt, auf der der Treiber den nicht zugeordneten Bereich zuordnen soll.
SpecialLockTransfer
[in] Eine -Struktur, die den Vorgang "special-lock-transfer" beschreibt.
SpecialLockTransfer.hAllocation
[in] Ein Handle für die Zuordnung, die die DxgkDdiCreateAllocation-Funktion des Treibers zuvor im hAllocation-Member einer DXGK_ALLOCATIONINFO-Struktur zurückgegeben hat, die Teil des pAllocationInfo-Elements der DXGKARG_CREATEALLOCATION-Struktur ist. Das Zuordnungshandle verweist auf einen Puffer, der private Treiberdaten für die Sondersperrübertragung enthält.
SpecialLockTransfer.TransferOffset
[in] Der Offset der ersten Seite innerhalb der übertragenen Zuordnung in Byte. Dieser Offset wird nur auf eine Position angewendet, die von einem Segmentstandort 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 von seiner 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 einen SegmentId-Member und eine Union, die entweder einen Offset in ein Segment der Quellzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für die Quelle (pMdl) enthält.
SpecialLockTransfer.Source.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Quellzuordnung oder null, wenn die Quellzuordnung vom pMdl-Member der Union beschrieben wird, die Source enthält.
SpecialLockTransfer.Source. (nicht benannte Union)
[in] Eine Union, die entweder einen Offset in ein Segment der Quellzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für die Quelle (pMdl) enthält.
SpecialLockTransfer.Source.SegmentAddress
[in] Die Quellsegmentadresse, wenn das SegmentId-Element von Source nichtzero ist. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der 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 0 ist.
SpecialLockTransfer.Destination
[in] Eine Struktur, die die Zielzuordnung beschreibt. Diese Struktur enthält einen SegmentId-Member und eine Union, die entweder einen Offset in ein Segment der Zielzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für das Ziel (pMdl) enthält.
SpecialLockTransfer.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielzuordnung oder null, wenn die Zielzuordnung vom pMdl-Member der Union beschrieben wird, die Destination enthält.
SpecialLockTransfer.Destination. (nicht benannte Union)
[in] Eine Union, die entweder einen Offset in ein Segment der Zielzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für das Ziel (pMdl) enthält.
SpecialLockTransfer.Destination.SegmentAddress
[in] Die Zielsegmentadresse, wenn das SegmentId-Element von Destination nichtzero ist. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der 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 von Destination null ist.
SpecialLockTransfer.Flags
[in] Eine DXGK_TRANSFERFLAGS-Struktur , die in Bitfeldflags den Typ des auszuführenden Vorgangs "Special-lock-transfer" identifiziert.
SpecialLockTransfer.SwizzlingRangeId
[in] Ein UINT-Wert, der den Schwenkbereich identifiziert.
SpecialLockTransfer.SwizzlingRangeData
[in] Ein UINT-Wert, der Swizzling Range-Daten 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 erstellt wurde, als der Treiber DxgkCbCreateContextAllocation aufgerufen hat. Das Handle für diese Zuordnung wird im hAllocation-Member der DXGKARGCB_CREATECONTEXTALLOCATION-Struktur zurückgegeben. Der Treiber übergibt einen Zeiger auf diese Struktur im ContextAllocation-Parameter , wenn er DxgkCbCreateContextAllocation aufruft.
InitContextResource.Destination
[in] Eine Struktur, die die Zielkontextzuordnung beschreibt. Diese Struktur enthält einen SegmentId-Member und eine Union, die entweder einen Offset in ein Segment der Zielkontextzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für das Ziel (pMdl) enthält.
InitContextResource.Destination.SegmentId
[in] Der Bezeichner eines Segments innerhalb der Zielkontextzuordnung oder null, wenn die Zielkontextzuordnung durch das pMdl-Element der Union beschrieben wird, die Destination enthält.
InitContextResource.Destination. (nicht benannte Union)
[in] Eine Union, die entweder einen Offset in ein Segment der Zielkontextzuordnung (SegmentAddress) oder einen Zeiger auf eine MDL für das Ziel (pMdl) enthält.
InitContextResource.Destination.SegmentAddress
[in] Die Zielsegmentadresse, wenn das SegmentId-Element von Destination nichtzero ist. Das DirectX-Grafikkernsubsystem berechnet die Segmentadresse als Summe des Segmentoffsets und der 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 von Destination null ist.
InitContextResource.Destination.VirtualAddress
[in] Die virtuelle Adresse der Zielkontextzuordnung. Diese Adresse ist während der Lebensdauer der Kontextzuordnung gültig.
Befolgen Sie die Verfahren im Abschnitt Virtuelle Adressen für Zielkontextzuordnungen" des Themas DxgkCbCreateContextAllocation , um sicherzustellen, dass die virtuelle Adresse gültig ist.
InitContextResource.Destination.GpuVirtualAddress
Virtuelle GPU-Adresse der zu initialisierenden Kontextressource.
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 Fü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, mit dem Seitentabelleneinträge von einem Speicherort an einen anderen kopiert werden.
UpdateContextAllocation
Eine DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION-Struktur , die den Vorgang beschreibt, der zum Aktualisieren des Inhalts eines Kontexts oder einer Gerätezuordnung verwendet wird.
NotifyResidency
Eine DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY-Struktur , die einen Änderungsvorgang für die Residency-Zuordnung beschreibt.
SignalMonitoredFence
[in] Eine DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE-Struktur , die eine GPU-Anweisung beschreibt, um das aus 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 und dem von SegmentId angegebenen Blendensegment zugeordnet ist.
Bei einer freigegebenen Zuordnung wird hDevice auf das Gerät festgelegt, das der Videospeicher-Manager als Besitzer der Zuordnung ermittelt 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 Segment Mit SegmentId angegeben wird.
hAllocation ist NULL , wenn ein DMA-Puffer dem Blendensegment zugeordnet ist, 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 Segments bis zu den ersten Seiten, die zugeordnet werden sollen.
MapApertureSegment2.NumberOfPages
[in] Die Größe des Bereichs, der innerhalb der Zuordnung in Seiten zugeordnet wird.
MapApertureSegment2.Adl
[in] Eine DXGK_ADL-Struktur mit der Adressdeskriptorliste (Address Descriptor List, ADL), die die logischen Adresszuordnungen (Seiten) für den Zuordnungsspeicher beschreibt. Diese ADL kann entweder zusammenhängend oder ein Seitenarray sein. Der Treiber muss in der Lage sein, beide Fälle zu verarbeiten.
MapApertureSegment2.Flags
[in] Eine DXGK_MAPAPERTUREFLAGS-Struktur , die in Bitfeldflags den Typ des auszuführenden Vorgangs map-aperture-segment identifiziert.
MapApertureSegment2.AdlOffset
[in] Der Offset innerhalb der ADL zum Beginn des Bereichs logischer Adressen, der für den aktuellen Vorgang zugeordnet wird, der in Systemspeicherseiten angegeben wird. Wenn es sich bei der ADL um eine zusammenhängende ADL handelt, ist der BasePageNumber-Member der ADL die Startadresse eines zusammenhängenden Speicherbereichs. Verwenden Sie andernfalls den Pages-Member des ADL für nicht zusammenhängenden Arbeitsspeicher.
MapApertureSegment2.CpuVisibleAddress
Wenn die Zuordnung eines Treibers mit dem Flag "MapApertureCpuVisible " erstellt wurde, ist CpuVisibleAddress ein Nicht-NULL-Zeiger auf eine vom System zugeordnete virtuelle Adresse im Kernelmodus für DXGK_OPERATION_MAP_APERTURE_SEGMENT2 Vorgänge. Diese Adresse ist gültig, solange die Zuordnung dem Blendensegment zugeordnet ist und unmittelbar nach dem entsprechenden DXGK_OPERATION_UNMAP_APERTURE_SEGMENT Aufruf derselben 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 Element ist reserviert und sollte nicht verwendet werden.
Reserved.Reserved[64]
Dieses Element ist reserviert und sollte nicht verwendet werden.
hSystemContext
[in] Ein Handle für den Systemkontext für den Pagingvorgang.
DmaBufferGpuVirtualAddress
Ein D3DGPU_VIRTUAL_ADDRESS Datentyp, der die virtuelle Adresse angibt, an der der DMA-Puffer ausgelagert wurde. Wenn die physische Adresse 0 ist, wird der DMA-Puffer nicht ordnungsgemäß ausgelagert.
DmaBufferWriteOffset
Der aktuelle Vorgangsoffset in Bytes ab dem Start des DMA-Puffers.
Hinweise
MDL ist in der Dokumentation zum Windows-Treibermodell (WDM) definiert.
WDDM-Synchronisierungsklasse:
- First Level GPU Scheduler Class for BuildPagingBuffer submission type.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Wird ab Windows Vista unterstützt. |
Kopfzeile | d3dkmddi.h (einschließlich D3dkmddi.h) |
Weitere Informationen
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