Freigeben über


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:

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Wird ab Windows Vista unterstützt.
Kopfzeile d3dkmddi.h (einschließlich D3dkmddi.h)

Weitere Informationen

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKARG_CREATEALLOCATION

DXGK_ALLOCATIONINFO

DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES

DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL

DXGK_BUILDPAGINGBUFFER_FLUSHTLB

DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY

DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL

DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION

DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE

DXGK_DISCARDCONTENTFLAGS

DXGK_MAPAPERTUREFLAGS

DXGK_TRANSFERFLAGS

DxgkCbCreateContextAllocation

DxgkDdiBuildPagingBuffer

DxgkDdiCreateAllocation

MDL

[MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray

pfnLockCb