structure DXGKARG_BUILDPAGINGBUFFER (d3dkmddi.h)

La structure DXGKARG_BUILDPAGINGBUFFER décrit les paramètres du rappel DxgkDdiBuildPagingBuffer** qui génère une mémoire tampon de pagination à utiliser dans une opération de transfert de mémoire.

Syntaxe

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;
    struct {
      UINT Reserved[64];
    } Reserved;
  };
  HANDLE                           hSystemContext;
  D3DGPU_VIRTUAL_ADDRESS           DmaBufferGpuVirtualAddress;
  UINT                             DmaBufferWriteOffset;
} DXGKARG_BUILDPAGINGBUFFER;

Membres

pDmaBuffer

[in/out] Adresse virtuelle du premier octet disponible dans la mémoire tampon de pagination. Lorsque le pilote est appelé pour la première fois avec une nouvelle mémoire tampon de pagination, cette adresse virtuelle est alignée sur 4 Ko. Le pilote emballe étroitement les opérations dans la mémoire tampon de pagination jusqu’à ce que la mémoire tampon de pagination soit pleine, puis utilise une nouvelle mémoire tampon de pagination. Par conséquent, si l’unité de traitement graphique (GPU) nécessite un alignement spécifique pour une soumission de mémoire tampon de pagination, le pilote doit appliquer cet alignement en remplissant les opérations qu’il écrit dans la mémoire tampon de pagination. Avant que la fonction DxgkDdiBuildPagingBuffer ne retourne, le pilote doit mettre à jour pDmaBuffer pour pointer au-delà du dernier octet écrit dans la mémoire tampon de pagination.

DmaSize

[in/out] Taille, en octets, de la mémoire tampon de pagination spécifiée par pDmaBuffer .

pDmaBufferPrivateData

[in/out] Pointeur vers une structure de données privées résidente du pilote associée à la mémoire tampon d’accès direct à la mémoire (DMA) (c’est-à-dire, mémoire tampon de pagination) spécifiée par pDmaBuffer .

DmaBufferPrivateDataSize

[in/out] Nombre d’octets restant dans la structure de données privée vers laquelle pDmaBufferPrivateData pointe pour l’opération en cours.

Operation

[in] Valeur de type DXGK_BUILDPAGINGBUFFER_OPERATION qui indique le type d’opération mémoire à effectuer.

MultipassOffset

[in/out] Valeur UINT qui spécifie la progression de l’opération de pagination si plusieurs mémoires tampons de pagination sont requises. Le pilote définit cette valeur pour indiquer une division en plusieurs mémoires tampons de pagination pour plusieurs opérations de transfert. Par exemple, le pilote peut stocker le numéro de page qui a été transféré pour un transfert paginé.

Transfer

[in] Structure qui décrit l’opération de transfert.

Transfer.hAllocation

[in] Handle de l’allocation que la fonction DxgkDdiCreateAllocation du pilote a précédemment retournée dans le membre hAllocation d’une structure DXGK_ALLOCATIONINFO, qui fait partie du membre pAllocationInfo de la structure DXGKARG_CREATEALLOCATION. Le handle d’allocation pointe vers une mémoire tampon qui contient des données de pilote privé pour le transfert.

Transfer.TransferOffset

[in] Décalage, en octets, de la première page de l’allocation transférée. Ce décalage est appliqué uniquement à un emplacement décrit par un emplacement de segment. Ce décalage ne s’applique pas à une description MDL d’une plage de mémoire. Si le pilote a besoin de plusieurs mémoires tampons de pagination pour terminer le transfert (autrement dit, le pilote retourne STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER à partir de sa fonction DxgkDdiBuildPagingBuffer ), TransferOffset est le même pour chaque appel à DxgkDdiBuildPagingBuffer pour ce transfert.

Transfer.TransferSize

[in] Taille, en octets, des informations de mémoire à transférer.

Transfer.Source

[in] Structure qui décrit l’allocation source. Cette structure contient un membre SegmentId et une union qui contient un décalage dans un segment de l’allocation source (SegmentAddress) ou un pointeur vers un MDL pour la source (pMdl).

Transfer.Source.SegmentId

[in] Identificateur d’un segment au sein de l’allocation source, ou zéro si l’allocation source est décrite par le membre pMdl de l’union que contient la source .

Transfer.Source.SegmentAddress

[in] Adresse de segment source, si le membre SegmentId de source est différent de zéro. Le sous-système du noyau graphique DirectX calcule l’adresse de segment comme la somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Source.pMdl

[in] Pointeur vers une mémoire tampon qui contient la structure MDL qui décrit les pages de mémoire système pour la source, si le membre SegmentId de source est égal à zéro.

Transfer.Destination

[in] Structure qui décrit l’allocation de destination. Cette structure contient un membre SegmentId et une union qui contient un décalage dans un segment de l’allocation de destination (SegmentAddress) ou un pointeur vers un MDL pour la destination (pMdl).

Transfer.Destination.SegmentId

[in] Identificateur d’un segment dans l’allocation de destination, ou zéro si l’allocation de destination est décrite par le membre pMdl de l’union que contient Destination .

Transfer.Destination.SegmentAddress

[in] Adresse du segment de destination, si le membre SegmentId de Destination est différent de zéro. Le sous-système du noyau graphique DirectX calcule l’adresse de segment comme la somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

[in] Pointeur vers une mémoire tampon qui contient la structure MDL qui décrit les pages de mémoire système pour la destination, si le membre SegmentId de Destination est égal à zéro.

Transfer.Flags

[in] Une structure DXGK_TRANSFERFLAGS qui identifie, dans les indicateurs de champ de bits, le type d’opération de verrouillage-transfert spécial à effectuer.

Transfer.MdlOffset

[in] Décalage, dans les pages de mémoire système, dans la structure MDL vers laquelle pointe le membre pMdl , vers la première page de mémoire système pour l’opération en cours. Le pilote peut obtenir l’adresse physique de la première page de mémoire système en appelant la fonction [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray, comme suit.

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in] Structure qui décrit l’opération de remplissage.

Fill.hAllocation

[in] Handle de l’allocation qui contient le contenu à remplir.

Fill.FillSize

[in] Taille, en octets, des informations mémoire à remplir.

Fill.FillPattern

[in] Modèle avec laquelle remplir la destination. Le gestionnaire de mémoire vidéo utilise ces informations pour initialiser la mémoire vidéo à un modèle spécifique lorsqu’une allocation sans contenu est paginée pour la première fois. Dans ce cas, il n’existe aucune source pour la demande de remplissage, seule une destination existe.

Fill.Destination

[in] Structure qui décrit l’allocation de destination pour l’opération de remplissage.

Fill.Destination.SegmentId

[in] Identificateur d’un segment dans l’allocation de destination.

Fill.Destination.SegmentAddress

[in] Adresse du segment de destination. Le sous-système du noyau graphique DirectX calcule l’adresse de segment comme la somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr.

DiscardContent

[in] Structure qui décrit l’opération discard-content.

DiscardContent.hAllocation

[in] Handle de l’allocation qui contient du contenu à ignorer.

DiscardContent.Flags

[in] Une structure DXGK_DISCARDCONTENTFLAGS qui identifie, dans les indicateurs de champ de bits, le type d’opération de contenu d’abandon à effectuer.

DiscardContent.SegmentId

[in] Identificateur d’un segment dans l’allocation à partir duquel ignorer le contenu.

DiscardContent.SegmentAddress

[in] Un PHYSICAL_ADDRESS type de données (défini comme LARGE_INTEGER) qui indique l’adresse du segment. Le sous-système du noyau graphique DirectX calcule l’adresse de segment comme la somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr. C’est à cet emplacement que le contenu est ignoré.

ReadPhysical

[in] Structure qui décrit l’opération de lecture physique.

ReadPhysical.SegmentId

[in] Identificateur d’un segment à partir duquel les données sont lues.

ReadPhysical.PhysicalAddress

[in] Un PHYSICAL_ADDRESS type de données (défini comme LARGE_INTEGER) qui indique l’adresse physique, dans le segment spécifié par SegmentId , où les données sont lues.

WritePhysical

[in] Structure qui décrit l’opération physique d’écriture.

WritePhysical.SegmentId

[in] Identificateur d’un segment dans lequel les données sont écrites.

WritePhysical.PhysicalAddress

[in] Un PHYSICAL_ADDRESS type de données (défini comme LARGE_INTEGER) qui indique l’adresse physique, dans le segment spécifié par SegmentId , où les données sont écrites.

MapApertureSegment

[in] Structure qui décrit l’opération de segment d’ouverture de carte à l’aide d’un MDL.

MapApertureSegment.hDevice

[in] Handle pour l’appareil qui possède l’allocation spécifiée par hAllocation qui est mappée au segment d’ouverture spécifié par SegmentId .

Pour une allocation partagée, hDevice est défini sur l’appareil que le gestionnaire de mémoire vidéo a déterminé comme étant le propriétaire de l’allocation.

hDevice a la valeur NULL pour l’allocation principale.

MapApertureSegment.hAllocation

[in] Handle de l’allocation mappée au segment d’ouverture spécifié par SegmentId .

hAllocation a la valeur NULL lorsqu’une mémoire tampon DMA est mappée dans le segment d’ouverture, car les mémoires tampons DMA ne sont pas créées explicitement par le pilote.

MapApertureSegment.SegmentId

[in] Identificateur d’un segment d’ouverture à configurer.

MapApertureSegment.OffsetInPages

[in] Décalage, en pages, du début du segment aux premières pages à mapper.

MapApertureSegment.NumberOfPages

[in] Nombre de pages à mapper.

MapApertureSegment.pMdl

[in] Pointeur vers une mémoire tampon qui contient la structure MDL qui décrit les pages de mémoire système physiques à mapper dans le segment d’ouverture.

MapApertureSegment.Flags

[in] Une structure DXGK_MAPAPERTUREFLAGS qui identifie, dans les indicateurs de champ binaire, le type d’opération de segment d’ouverture de carte à effectuer.

MapApertureSegment.MdlOffset

[in] Décalage, dans les pages de mémoire système, dans la structure MDL vers laquelle pointe le membre pMdl , vers la première page de mémoire système pour l’opération en cours. Le pilote peut obtenir l’adresse physique de la première page de mémoire système en appelant la fonction [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray, comme suit.

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in] Structure qui décrit l’opération unmap-aperture-segment.

UnmapApertureSegment.hDevice

[in] Handle de l’appareil qui possède l’allocation que hAllocation spécifie et qui est non mappée à partir du segment d’ouverture spécifié par SegmentId .

Pour une allocation partagée, hDevice est défini sur l’appareil que le gestionnaire de mémoire vidéo a déterminé comme étant le propriétaire de l’allocation.

hDevice a la valeur NULL pour l’allocation principale.

UnmapApertureSegment.hAllocation

[in] Handle de l’allocation qui n’est pas mappée à partir du segment d’ouverture spécifié par SegmentId .

hAllocation a la valeur NULL lorsqu’une mémoire tampon DMA est démassée du segment d’ouverture, car les mémoires tampons DMA ne sont pas créées explicitement par le pilote.

UnmapApertureSegment.SegmentId

[in] Identificateur d’un segment d’ouverture à configurer.

UnmapApertureSegment.OffsetInPages

[in] Décalage, en pages, du début du segment aux premières pages à démappage.

UnmapApertureSegment.NumberOfPages

[in] Nombre de pages à annuler.

UnmapApertureSegment.DummyPage

[in] Un PHYSICAL_ADDRESS type de données (qui est défini comme LARGE_INTEGER) qui indique l’adresse physique de la page d’espace réservé où le pilote doit mapper la plage qui n’est pas mappée.

SpecialLockTransfer

[in] Structure qui décrit l’opération special-lock-transfer.

SpecialLockTransfer.hAllocation

[in] Handle de l’allocation que la fonction DxgkDdiCreateAllocation du pilote a précédemment retournée dans le membre hAllocation d’une structure DXGK_ALLOCATIONINFO, qui fait partie du membre pAllocationInfo de la structure DXGKARG_CREATEALLOCATION. Le handle d’allocation pointe vers une mémoire tampon qui contient des données de pilote privé pour le transfert de verrou spécial.

SpecialLockTransfer.TransferOffset

[in] Décalage, en octets, de la première page de l’allocation transférée. Ce décalage est appliqué uniquement à un emplacement décrit par un emplacement de segment. Ce décalage ne s’applique pas à une description MDL d’une plage de mémoire. Si le pilote a besoin de plusieurs mémoires tampons de pagination pour terminer le transfert (autrement dit, le pilote retourne STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER à partir de sa fonction DxgkDdiBuildPagingBuffer ), TransferOffset est le même pour chaque appel à DxgkDdiBuildPagingBuffer pour ce transfert.

SpecialLockTransfer.TransferSize

[in] Taille, en octets, des informations de mémoire à transférer.

SpecialLockTransfer.Source

[in] Structure qui décrit l’allocation source. Cette structure contient un membre SegmentId et une union qui contient un décalage dans un segment de l’allocation source (SegmentAddress) ou un pointeur vers un MDL pour la source (pMdl).

SpecialLockTransfer.Source.SegmentId

[in] Identificateur d’un segment au sein de l’allocation source, ou zéro si l’allocation source est décrite par le membre pMdl de l’union que contient la source .

SpecialLockTransfer.Source. (union sans nom)

[in] Union qui contient un décalage dans un segment de l’allocation source (SegmentAddress) ou un pointeur vers une MDL pour la source (pMdl).

SpecialLockTransfer.Source.SegmentAddress

[in] Adresse du segment source, si le membre SegmentId de Source est différent de zéro. Le sous-système du noyau graphique DirectX calcule l’adresse du segment en tant que somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Source.pMdl

[in] Pointeur vers une mémoire tampon qui contient la structure MDL qui décrit les pages de mémoire système de la source, si le membre SegmentId de Source est égal à zéro.

SpecialLockTransfer.Destination

[in] Structure qui décrit l’allocation de destination. Cette structure contient un membre SegmentId et une union qui contient un décalage dans un segment de l’allocation de destination (SegmentAddress) ou un pointeur vers une MDL pour la destination (pMdl).

SpecialLockTransfer.Destination.SegmentId

[in] Identificateur d’un segment dans l’allocation de destination, ou zéro si l’allocation de destination est décrite par le membre pMdl de l’union que destination contient.

SpecialLockTransfer.Destination. (union sans nom)

[in] Union qui contient un décalage dans un segment de l’allocation de destination (SegmentAddress) ou un pointeur vers une MDL pour la destination (pMdl).

SpecialLockTransfer.Destination.SegmentAddress

[in] Adresse du segment de destination, si le membre SegmentId de Destination est différent de zéro. Le sous-système du noyau graphique DirectX calcule l’adresse du segment en tant que somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

[in] Pointeur vers une mémoire tampon qui contient la structure MDL qui décrit les pages de mémoire système pour la destination, si le membre SegmentId de Destination est égal à zéro.

SpecialLockTransfer.Flags

[in] Structure DXGK_TRANSFERFLAGS qui identifie, dans les indicateurs de champ binaire, le type d’opération de verrouillage spécial à effectuer.

SpecialLockTransfer.SwizzlingRangeId

[in] Valeur UINT qui identifie la plage swizzling.

SpecialLockTransfer.SwizzlingRangeData

[in] Valeur UINT qui spécifie les données de plage swizzling.

InitContextResource

[in] Structure qui décrit l’opération d’initialisation de contexte. Pris en charge à partir de Windows 8.

InitContextResource.hAllocation

[in] Handle pour l’allocation de contexte qui a été créée lorsque le pilote a appelé DxgkCbCreateContextAllocation. Le handle de cette allocation est retourné dans le membre hAllocation de la structure DXGKARGCB_CREATECONTEXTALLOCATION . Le pilote passe un pointeur vers cette structure dans le paramètre ContextAllocation lorsqu’il appelle DxgkCbCreateContextAllocation.

InitContextResource.Destination

[in] Structure qui décrit l’allocation du contexte de destination. Cette structure contient un membre SegmentId et une union qui contient un décalage dans un segment de l’allocation de contexte de destination (SegmentAddress) ou un pointeur vers une MDL pour la destination (pMdl).

InitContextResource.Destination.SegmentId

[in] Identificateur d’un segment dans l’allocation de contexte de destination, ou zéro si l’allocation de contexte de destination est décrite par le membre pMdl de l’union que la destination contient.

InitContextResource.Destination. (union sans nom)

[in] Union qui contient un décalage dans un segment de l’allocation de contexte de destination (SegmentAddress) ou un pointeur vers une MDL pour la destination (pMdl).

InitContextResource.Destination.SegmentAddress

[in] Adresse du segment de destination, si le membre SegmentId de Destination est différent de zéro. Le sous-système du noyau graphique DirectX calcule l’adresse du segment en tant que somme du décalage de segment et de l’adresse de base du segment : SegmentAddress = SegmentOffset + Segment.BaseAddr.

InitContextResource.Destination.pMdl

[in] Pointeur vers une mémoire tampon qui contient la structure MDL qui décrit les pages de mémoire système pour la destination, si le membre SegmentId de Destination est égal à zéro.

InitContextResource.Destination.VirtualAddress

[in] Adresse virtuelle de l’allocation de contexte de destination. Cette adresse est valide pendant la durée de vie de l’allocation de contexte.

Suivez les procédures de la section Adresses virtuelles pour les allocations de contexte de destination » de la rubrique DxgkCbCreateContextAllocation pour vous assurer que l’adresse virtuelle est valide.

InitContextResource.Destination.GpuVirtualAddress

Adresse virtuelle GPU de la ressource de contexte à initialiser.

TransferVirtual

Structure DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL qui décrit l’opération utilisée pour transférer du contenu d’allocation entre des emplacements en mémoire.

FillVirtual

Structure DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL qui décrit l’opération utilisée pour remplir une allocation avec un modèle.

UpdatePageTable

Structure DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE qui décrit l’opération utilisée pour mettre à jour une table de pages.

FlushTlb

Structure DXGK_BUILDPAGINGBUFFER_FLUSHTLB qui décrit l’opération utilisée pour vider les mémoires tampons d’apparence de traduction.

CopyPageTableEntries

Structure DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES qui décrit l’opération utilisée pour copier des entrées de table de pages d’un emplacement à un autre.

UpdateContextAllocation

Structure DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION qui décrit l’opération utilisée pour mettre à jour le contenu d’un contexte ou d’une allocation d’appareil.

NotifyResidency

Structure DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY qui décrit une opération de modification d’allocation de résidence.

SignalMonitoredFence

[in] Structure DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE qui décrit une instruction GPU pour signaler l’objet de clôture supervisée de pagination à la mémoire tampon DMA. Disponible à partir de Windows 10, version 1703 (WDDM 2.2).

MapApertureSegment2

MapApertureSegment2.hDevice

[in] Handle pour l’appareil qui possède l’allocation spécifiée par hAllocation qui est mappée au segment d’ouverture spécifié par SegmentId .

Pour une allocation partagée, hDevice est défini sur l’appareil que le gestionnaire de mémoire vidéo a déterminé comme étant le propriétaire de l’allocation.

hDevice a la valeur NULL pour l’allocation primaire.

MapApertureSegment2.hAllocation

[in] Handle du pilote à l’allocation mappée au segment d’ouverture spécifié par SegmentId .

hAllocation a la valeur NULL lorsqu’une mémoire tampon DMA est mappée dans le segment d’ouverture, car les mémoires tampons DMA ne sont pas créées explicitement par le pilote.

MapApertureSegment2.SegmentId

[in] Identificateur d’un segment d’ouverture à configurer.

MapApertureSegment2.OffsetInPages

[in] Décalage, en pages, du début du segment aux premières pages à mapper.

MapApertureSegment2.NumberOfPages

[in] Taille de la plage mappée dans l’allocation, en pages.

MapApertureSegment2.Adl

[in] Une structure DXGK_ADL avec la liste de descripteurs d’adresses (ADL) qui décrit les mappages d’adresses logiques (pages) pour la mémoire d’allocation. Cet ADL peut être contigu ou un tableau de pages ; le pilote doit être en mesure de gérer les deux cas.

MapApertureSegment2.Flags

[in] Structure DXGK_MAPAPERTUREFLAGS qui identifie, dans les indicateurs de champ binaire, le type d’opération map-aperture-segment à effectuer.

MapApertureSegment2.AdlOffset

[in] Décalage au sein de l’ADL au début de la plage d’adresses logiques mappées pour l’opération en cours, spécifié dans les pages mémoire système. Si l’ADL est un ADL contigu, le membre BasePageNumber de l’ADL est l’adresse de début d’une plage contiguë de mémoire. Sinon, utilisez le membre Pages d’ADL pour la mémoire non contiguë.

MapApertureSegment2.CpuVisibleAddress

Si l’allocation d’un pilote a été créée avec l’indicateur MapApertureCpuVisible défini, CpuVisibleAddress est un pointeur non null vers une adresse virtuelle en mode noyau mappée par le système pour les opérations DXGK_OPERATION_MAP_APERTURE_SEGMENT2 . Cette adresse est valide tant que l’allocation est mappée dans le segment d’ouverture et sera libérée immédiatement après l’appel DXGK_OPERATION_UNMAP_APERTURE_SEGMENT correspondant pour la même allocation.

Si MapApertureCpuVisible n’est pas spécifié, CpuVisibleAddress a la valeur NULL pour les opérations DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .

Reserved

Ce membre est réservé et ne doit pas être utilisé.

Reserved.Reserved[64]

Ce membre est réservé et ne doit pas être utilisé.

hSystemContext

[in] Handle vers le contexte système pour l’opération de pagination.

DmaBufferGpuVirtualAddress

Un D3DGPU_VIRTUAL_ADDRESS type de données qui indique l’adresse virtuelle dans laquelle la mémoire tampon DMA a été paginée. Si l’adresse physique est égale à zéro, la mémoire tampon DMA n’est pas correctement paginée.

DmaBufferWriteOffset

Décalage de l’opération actuelle en octets à partir du début de la mémoire tampon DMA.

Remarques

MDL est défini dans la documentation Windows Driver Model (WDM).

Classe de synchronisation WDDM :

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge à partir de Windows Vista.
En-tête d3dkmddi.h (include D3dkmddi.h)

Voir aussi

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