Condividi tramite


DXGKARG_BUILDPAGINGBUFFER struttura (d3dkmddi.h)

La struttura DXGKARG_BUILDPAGINGBUFFER descrive i parametri per il callback DxgkDdiBuildPagingBuffer** che compila un buffer di paging da usare in un'operazione di trasferimento della memoria.

Sintassi

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;

Members

pDmaBuffer

[in/out] Indirizzo virtuale al primo byte disponibile nel buffer di paging. Quando il driver viene chiamato per la prima volta con un nuovo buffer di paging, questo indirizzo virtuale è allineato a 4 KB. Il driver esegue strettamente le operazioni nel buffer di paging fino a quando il buffer di paging non è pieno e quindi usa un nuovo buffer di paging. Pertanto, se l'unità di elaborazione grafica (GPU) richiede un allineamento specifico per un invio di buffer di paging, il driver deve applicare questo allineamento spaziando le operazioni che scrive nel buffer di paging. Prima che la funzione DxgkDdiBuildPagingBuffer restituisca, il driver deve aggiornare pDmaBuffer per puntare l'ultimo byte scritto nel buffer di paging.

DmaSize

[in/out] Dimensioni, in byte, del buffer di paging che pDmaBuffer specifica.

pDmaBufferPrivateData

[in/out] Puntatore a una struttura di dati privata residente dal driver associata al buffer DMA (Direct Memory Access) (ovvero il buffer di paging) specificato da pDmaBuffer .

DmaBufferPrivateDataSize

[in/out] Numero di byte che rimangono nella struttura di dati privata a cui pDmaBufferPrivateData punta per l'operazione corrente.

Operation

[in] Valore DXGK_BUILDPAGINGBUFFER_OPERATION tipizzato che indica il tipo di operazione di memoria da eseguire.

MultipassOffset

[in/out] Valore UINT che specifica lo stato di avanzamento dell'operazione di paging se sono necessari più buffer di paging. Il driver imposta questo valore per indicare una suddivisione in più buffer di paging per più operazioni di trasferimento. Ad esempio, il driver può archiviare il numero di pagina che è stato trasferito per un trasferimento basato su pagine.

Transfer

[in] Struttura che descrive l'operazione di trasferimento.

Transfer.hAllocation

[in] Handle per l'allocazione restituita in precedenza dalla funzione DxgkDdiCreateAllocation nel membro hAllocation di una struttura di DXGK_ALLOCATIONINFO, che fa parte del membro pAllocationInfo della struttura di DXGKARG_CREATEALLOCATION. L'handle di allocazione punta a un buffer che contiene dati del driver privato per il trasferimento.

Transfer.TransferOffset

[in] Offset, in byte, della prima pagina all'interno dell'allocazione trasferita. Questo offset viene applicato solo a una posizione descritta da un segmento. Questo offset non si applica a una descrizione MDL di un intervallo di memoria. Se il driver richiede più buffer di paging per completare il trasferimento, ovvero il driver restituisce STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER dalla relativa funzione DxgkDdiBuildPagingBuffer , TransferOffset è lo stesso per ogni chiamata a DxgkDdiBuildPagingBuffer per questo trasferimento.

Transfer.TransferSize

[in] Dimensioni, in byte, delle informazioni sulla memoria da trasferire.

Transfer.Source

[in] Struttura che descrive l'allocazione di origine. Questa struttura contiene un membro SegmentId e un'unione che contiene un offset in un segmento dell'allocazione di origine (SegmentAddress) o un puntatore a un MDL per l'origine (pMdl).

Transfer.Source.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione di origine o zero se l'allocazione di origine è descritta dal membro pMdl dell'unione contenente l'origine.

Transfer.Source.SegmentAddress

[in] Indirizzo del segmento di origine, se il membro SegmentId di Source è diverso da zero. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Source.pMdl

[in] Puntatore a un buffer contenente la struttura MDL che descrive le pagine di memoria di sistema per l'origine, se il membro SegmentId di Source è zero.

Transfer.Destination

[in] Struttura che descrive l'allocazione di destinazione. Questa struttura contiene un membro SegmentId e un'unione che contiene un offset in un segmento dell'allocazione di destinazione (SegmentAddress) o un puntatore a un MDL per la destinazione (pMdl).

Transfer.Destination.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione di destinazione o zero se l'allocazione di destinazione è descritta dal membro pMdl dell'unione contenente destinazione .

Transfer.Destination.SegmentAddress

[in] Indirizzo del segmento di destinazione, se il membro SegmentId di Destination è diverso da zero. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

[in] Puntatore a un buffer contenente la struttura MDL che descrive le pagine di memoria di sistema per la destinazione, se il membro SegmentId di Destination è zero.

Transfer.Flags

[in] Struttura DXGK_TRANSFERFLAGS che identifica, in flag di campo a bit, il tipo di operazione di trasferimento speciale da eseguire.

Transfer.MdlOffset

[in] Offset, nelle pagine di memoria di sistema, all'interno della struttura MDL a cui punta il membro pMdl , alla prima pagina di memoria di sistema per l'operazione corrente. Il driver può ottenere l'indirizzo fisico della prima pagina di memoria di sistema chiamando la funzione [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray come indicato di seguito.

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in] Struttura che descrive l'operazione di riempimento.

Fill.hAllocation

[in] Handle per l'allocazione contenente il contenuto da riempire.

Fill.FillSize

[in] Dimensioni, in byte, delle informazioni sulla memoria da riempire.

Fill.FillPattern

[in] Modello con cui riempire la destinazione. La gestione memoria video usa queste informazioni per inizializzare la memoria video in un modello specifico quando un'allocazione senza contenuto viene prima paginata. In questo caso, nessuna origine esiste per la richiesta di riempimento, ma esiste solo una destinazione.

Fill.Destination

[in] Struttura che descrive l'allocazione di destinazione per l'operazione di riempimento.

Fill.Destination.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione di destinazione.

Fill.Destination.SegmentAddress

[in] Indirizzo del segmento di destinazione. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

DiscardContent

[in] Struttura che descrive l'operazione di eliminazione del contenuto.

DiscardContent.hAllocation

[in] Handle per l'allocazione che contiene contenuto da eliminare.

DiscardContent.Flags

[in] Struttura DXGK_DISCARDCONTENTFLAGS che identifica, in flag di campo a bit, il tipo di operazione di eliminazione del contenuto da eseguire.

DiscardContent.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione da cui eliminare il contenuto.

DiscardContent.SegmentAddress

[in] Tipo di dati PHYSICAL_ADDRESS (definito come LARGE_INTEGER) che indica l'indirizzo del segmento. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr. Questa posizione è la posizione in cui il contenuto viene rimosso.

ReadPhysical

[in] Struttura che descrive l'operazione di lettura-fisica.

ReadPhysical.SegmentId

[in] Identificatore di un segmento da cui i dati sono letti.

ReadPhysical.PhysicalAddress

[in] Tipo di dati PHYSICAL_ADDRESS (definito come LARGE_INTEGER) che indica l'indirizzo fisico, all'interno del segmento specificato da SegmentId , dove i dati vengono letti.

WritePhysical

[in] Struttura che descrive l'operazione fisica di scrittura.

WritePhysical.SegmentId

[in] Identificatore di un segmento a cui vengono scritti i dati.

WritePhysical.PhysicalAddress

[in] Tipo di dati PHYSICAL_ADDRESS (definito come LARGE_INTEGER) che indica l'indirizzo fisico, all'interno del segmento specificato da SegmentId , dove vengono scritti i dati.

MapApertureSegment

[in] Struttura che descrive l'operazione di segmento map-aperture usando un MDL.

MapApertureSegment.hDevice

[in] Handle al dispositivo proprietario dell'allocazione che hAllocation specifica che viene eseguito il mapping nel segmento di apertura specificato da SegmentId .

Per un'allocazione condivisa, hDevice è impostato sul dispositivo che la gestione memoria video ha determinato di essere il proprietario dell'allocazione.

hDevice è NULL per l'allocazione primaria.

MapApertureSegment.hAllocation

[in] Handle per l'allocazione mappata al segmento di apertura specificato da SegmentId .

hAllocation è NULL quando viene eseguito il mapping di un buffer DMA al segmento di apertura perché i buffer DMA non vengono creati in modo esplicito dal driver.

MapApertureSegment.SegmentId

[in] Identificatore di un segmento di apertura da configurare.

MapApertureSegment.OffsetInPages

[in] Offset, nelle pagine, dall'inizio del segmento alla prima pagina da mappare.

MapApertureSegment.NumberOfPages

[in] Numero di pagine da mappare.

MapApertureSegment.pMdl

[in] Puntatore a un buffer contenente la struttura MDL che descrive le pagine di memoria del sistema fisico da mappare nel segmento di apertura.

MapApertureSegment.Flags

[in] Struttura DXGK_MAPAPERTUREFLAGS che identifica, in flag di campo a bit, il tipo di operazione del segmento di apertura mappa da eseguire.

MapApertureSegment.MdlOffset

[in] Offset, nelle pagine di memoria di sistema, all'interno della struttura MDL a cui punta il membro pMdl , alla prima pagina di memoria di sistema per l'operazione corrente. Il driver può ottenere l'indirizzo fisico della prima pagina di memoria di sistema chiamando la funzione [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray come indicato di seguito.

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in] Struttura che descrive l'operazione unmap-aperture-segmento.

UnmapApertureSegment.hDevice

[in] Handle al dispositivo proprietario dell'allocazione che hAllocation specifica che non viene eseguito il mapping dal segmento di apertura specificato da SegmentId .

Per un'allocazione condivisa, hDevice è impostato sul dispositivo che la gestione memoria video ha determinato di essere il proprietario dell'allocazione.

hDevice è NULL per l'allocazione primaria.

UnmapApertureSegment.hAllocation

[in] Handle per l'allocazione non mappata dal segmento di apertura specificato da SegmentId .

hAllocation è NULL quando un buffer DMA non viene eseguito il mapping dal segmento di apertura perché i buffer DMA non vengono creati in modo esplicito dal driver.

UnmapApertureSegment.SegmentId

[in] Identificatore di un segmento di apertura da configurare.

UnmapApertureSegment.OffsetInPages

[in] Offset, nelle pagine, dall'inizio del segmento alla prima pagina per annullare il mapping.

UnmapApertureSegment.NumberOfPages

[in] Numero di pagine da annullare.

UnmapApertureSegment.DummyPage

[in] Tipo di dati PHYSICAL_ADDRESS (definito come LARGE_INTEGER) che indica l'indirizzo fisico della pagina segnaposto in cui il driver deve eseguire il mapping dell'intervallo non mappato.

SpecialLockTransfer

[in] Struttura che descrive l'operazione special-lock-transfer.

SpecialLockTransfer.hAllocation

[in] Handle per l'allocazione restituita in precedenza dalla funzione DxgkDdiCreateAllocation nel membro hAllocation di una struttura di DXGK_ALLOCATIONINFO, che fa parte del membro pAllocationInfo della struttura di DXGKARG_CREATEALLOCATION. L'handle di allocazione punta a un buffer che contiene dati del driver privato per il trasferimento speciale.

SpecialLockTransfer.TransferOffset

[in] Offset, in byte, della prima pagina all'interno dell'allocazione trasferita. Questo offset viene applicato solo a una posizione descritta da un segmento. Questo offset non si applica a una descrizione MDL di un intervallo di memoria. Se il driver richiede più buffer di paging per completare il trasferimento, ovvero il driver restituisce STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER dalla relativa funzione DxgkDdiBuildPagingBuffer , TransferOffset è lo stesso per ogni chiamata a DxgkDdiBuildPagingBuffer per questo trasferimento.

SpecialLockTransfer.TransferSize

[in] Dimensioni, in byte, delle informazioni sulla memoria da trasferire.

SpecialLockTransfer.Source

[in] Struttura che descrive l'allocazione di origine. Questa struttura contiene un membro SegmentId e un'unione che contiene un offset in un segmento dell'allocazione di origine (SegmentAddress) o un puntatore a un MDL per l'origine (pMdl).

SpecialLockTransfer.Source.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione di origine o zero se l'allocazione di origine è descritta dal membro pMdl dell'unione contenente l'origine.

SpecialLockTransfer.Source. (unione senza nome)

[in] Unione che contiene un offset in un segmento dell'allocazione di origine (SegmentAddress) o un puntatore a un MDL per l'origine (pMdl).

SpecialLockTransfer.Source.SegmentAddress

[in] Indirizzo del segmento di origine, se il membro SegmentId di Source è diverso da zero. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Source.pMdl

[in] Puntatore a un buffer contenente la struttura MDL che descrive le pagine di memoria di sistema per l'origine, se il membro SegmentId di Source è zero.

SpecialLockTransfer.Destination

[in] Struttura che descrive l'allocazione di destinazione. Questa struttura contiene un membro SegmentId e un'unione che contiene un offset in un segmento dell'allocazione di destinazione (SegmentAddress) o un puntatore a un MDL per la destinazione (pMdl).

SpecialLockTransfer.Destination.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione di destinazione oppure zero se l'allocazione di destinazione è descritta dal membro pMdl dell'unione contenuta in Destination .

SpecialLockTransfer.Destination. (unione senza nome)

[in] Unione che contiene un offset in un segmento dell'allocazione di destinazione (SegmentAddress) o un puntatore a un MDL per la destinazione (pMdl).

SpecialLockTransfer.Destination.SegmentAddress

[in] Indirizzo del segmento di destinazione, se il membro SegmentId di Destination è diverso da zero. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

[in] Puntatore a un buffer contenente la struttura MDL che descrive le pagine di memoria di sistema per la destinazione, se il membro SegmentId di Destination è zero.

SpecialLockTransfer.Flags

[in] Struttura DXGK_TRANSFERFLAGS che identifica, in flag di campo di bit, il tipo di operazione speciale di trasferimento blocchi da eseguire.

SpecialLockTransfer.SwizzlingRangeId

[in] Valore UINT che identifica l'intervallo di scorrimento.

SpecialLockTransfer.SwizzlingRangeData

[in] Valore UINT che specifica i dati dell'intervallo di scorrimento.

InitContextResource

[in] Struttura che descrive l'operazione di inizializzazione del contesto. Supportato a partire da Windows 8.

InitContextResource.hAllocation

[in] Handle per l'allocazione del contesto creata quando il driver ha chiamato DxgkCbCreateContextAllocation. L'handle per questa allocazione viene restituito nel membro hAllocation della struttura DXGKARGCB_CREATECONTEXTALLOCATION . Il driver passa un puntatore a questa struttura nel parametro ContextAllocation quando chiama DxgkCbCreateContextAllocation.

InitContextResource.Destination

[in] Struttura che descrive l'allocazione del contesto di destinazione. Questa struttura contiene un membro SegmentId e un'unione che contiene un offset in un segmento dell'allocazione del contesto di destinazione (SegmentAddress) o un puntatore a un MDL per la destinazione (pMdl).

InitContextResource.Destination.SegmentId

[in] Identificatore di un segmento all'interno dell'allocazione del contesto di destinazione oppure zero se l'allocazione del contesto di destinazione è descritta dal membro pMdl dell'unione contenuta in Destination .

InitContextResource.Destination. (unione senza nome)

[in] Unione che contiene un offset in un segmento dell'allocazione del contesto di destinazione (SegmentAddress) o un puntatore a un MDL per la destinazione (pMdl).

InitContextResource.Destination.SegmentAddress

[in] Indirizzo del segmento di destinazione, se il membro SegmentId di Destination è diverso da zero. Il sottosistema kernel della grafica DirectX calcola l'indirizzo del segmento come somma dell'offset del segmento e l'indirizzo di base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

InitContextResource.Destination.pMdl

[in] Puntatore a un buffer contenente la struttura MDL che descrive le pagine di memoria di sistema per la destinazione, se il membro SegmentId di Destination è zero.

InitContextResource.Destination.VirtualAddress

[in] Indirizzo virtuale dell'allocazione del contesto di destinazione. Questo indirizzo è valido durante la durata dell'allocazione del contesto.

Seguire le procedure nella sezione Indirizzi virtuali per le allocazioni del contesto di destinazione" dell'argomento DxgkCbCreateContextAllocation per assicurarsi che l'indirizzo virtuale sia valido.

InitContextResource.Destination.GpuVirtualAddress

Indirizzo virtuale GPU della risorsa di contesto da inizializzare.

TransferVirtual

Struttura DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL che descrive l'operazione usata per trasferire il contenuto di allocazione tra posizioni in memoria.

FillVirtual

Struttura DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL che descrive l'operazione utilizzata per riempire un'allocazione con un criterio.

UpdatePageTable

Struttura DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE che descrive l'operazione utilizzata per aggiornare una tabella di pagine.

FlushTlb

Struttura DXGK_BUILDPAGINGBUFFER_FLUSHTLB che descrive l'operazione utilizzata per scaricare i buffer di ricerca della traduzione.

CopyPageTableEntries

Struttura DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES che descrive l'operazione utilizzata per copiare le voci della tabella di pagina da una posizione a un'altra.

UpdateContextAllocation

Struttura DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION che descrive l'operazione utilizzata per aggiornare il contenuto di un contesto o di un'allocazione del dispositivo.

NotifyResidency

Struttura DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY che descrive un'operazione di modifica dell'allocazione della residenza.

SignalMonitoredFence

[in] Struttura DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE che descrive un'istruzione GPU per segnalare l'oggetto recinto monitorato di paging al buffer DMA. Disponibile a partire da Windows 10 versione 1703 (WDDM 2.2).

MapApertureSegment2

MapApertureSegment2.hDevice

[in] Handle per il dispositivo proprietario dell'allocazione che hAllocation specifica che è mappato al segmento di apertura specificato da SegmentId .

Per un'allocazione condivisa, hDevice è impostato sul dispositivo che il gestore della memoria video ha determinato di essere il proprietario dell'allocazione.

hDevice è NULL per l'allocazione primaria.

MapApertureSegment2.hAllocation

[in] Handle del driver per l'allocazione mappata nel segmento di apertura specificato da SegmentId .

hAllocation è NULL quando viene eseguito il mapping di un buffer DMA nel segmento di apertura perché i buffer DMA non vengono creati in modo esplicito dal driver.

MapApertureSegment2.SegmentId

[in] Identificatore di un segmento di apertura da configurare.

MapApertureSegment2.OffsetInPages

[in] Offset, nelle pagine, dall'inizio del segmento alle prime pagine di cui eseguire il mapping.

MapApertureSegment2.NumberOfPages

[in] Dimensioni dell'intervallo di cui viene eseguito il mapping all'interno dell'allocazione, nelle pagine.

MapApertureSegment2.Adl

[in] Struttura DXGK_ADL con l'elenco dei descrittori di indirizzi (ADL) che descrive i mapping di indirizzi logici (pagine) per la memoria di allocazione. AdL può essere contiguo o una matrice di pagine; il driver deve essere in grado di gestire entrambi i casi.

MapApertureSegment2.Flags

[in] Struttura DXGK_MAPAPERTUREFLAGS che identifica, in flag di campo di bit, il tipo di operazione map-aperture-segment da eseguire.

MapApertureSegment2.AdlOffset

[in] Offset all'interno di ADL all'inizio dell'intervallo di indirizzi logici di cui è stato eseguito il mapping per l'operazione corrente, specificato nelle pagine di memoria di sistema. Se ADL è un ADL contiguo, il membro BasePageNumber di ADL è l'indirizzo iniziale di un intervallo contiguo di memoria. In caso contrario, utilizzare il membro Pages di ADL per la memoria non contigua.

MapApertureSegment2.CpuVisibleAddress

Se l'allocazione di un driver è stata creata con il flag MapApertureCpuVisible,CpuVisibleAddress è un puntatore non Null a un indirizzo virtuale mappato al sistema e in modalità kernel per le operazioni di DXGK_OPERATION_MAP_APERTURE_SEGMENT2 . Questo indirizzo è valido finché l'allocazione viene mappata nel segmento di apertura e verrà liberata immediatamente dopo la chiamata di DXGK_OPERATION_UNMAP_APERTURE_SEGMENT corrispondente per la stessa allocazione.

Se MapApertureCpuVisible non è specificato, CpuVisibleAddress è NULL per le operazioni di DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .

NotifyFenceResidency

MmapMmu

UnmapMmu

NotifyResidency2

NotifyAllocation

Reserved

Questo membro è riservato e non deve essere utilizzato.

Reserved.Reserved[64]

Questo membro è riservato e non deve essere utilizzato.

hSystemContext

[in] Handle per il contesto di sistema per l'operazione di paging.

DmaBufferGpuVirtualAddress

Tipo di dati D3DGPU_VIRTUAL_ADDRESS che indica l'indirizzo virtuale in cui è stato eseguito il paging del buffer DMA. Se l'indirizzo fisico è zero, il buffer DMA non viene eseguito correttamente il paging.

DmaBufferWriteOffset

Offset dell'operazione corrente in byte dall'inizio del buffer DMA.

Commenti

MDL è definito nella documentazione di Windows Driver Model (WDM).

Classe di sincronizzazione WDDM:

Requisiti

Requisito Valore
Client minimo supportato Supportato a partire da Windows Vista.
Intestazione d3dkmddi.h (include D3dkmddi.h)

Vedi anche

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