estructura DXGKARG_BUILDPAGINGBUFFER (d3dkmddi.h)

La estructura DXGKARG_BUILDPAGINGBUFFER describe los parámetros de la devolución de llamada DxgkDdiBuildPagingBuffer** que crea un búfer de paginación para su uso en una operación de transferencia de memoria.

Sintaxis

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;

Miembros

pDmaBuffer

[in/out] Una dirección virtual al primer byte disponible en el búfer de paginación. Cuando se llama por primera vez al controlador con un nuevo búfer de paginación, esta dirección virtual se alinea en 4 KB. El controlador empaqueta estrechamente las operaciones en el búfer de paginación hasta que el búfer de paginación está lleno y, a continuación, usa un nuevo búfer de paginación. Por lo tanto, si la unidad de procesamiento de gráficos (GPU) requiere una alineación específica para un envío de búfer de paginación, el controlador debe aplicar esta alineación rellenando las operaciones que escribe en el búfer de paginación. Antes de que se devuelva la función DxgkDdiBuildPagingBuffer , el controlador debe actualizar pDmaBuffer para que apunte más allá del último byte que se escribe en el búfer de paginación.

DmaSize

[in/out] Tamaño, en bytes, del búfer de paginación que pDmaBuffer especifica.

pDmaBufferPrivateData

[in/out] Puntero a una estructura de datos privada residente en controladores asociada al búfer de acceso directo a memoria (DMA) (es decir, búfer de paginación) que pDmaBuffer especifica.

DmaBufferPrivateDataSize

[in/out] Número de bytes que permanecen en la estructura de datos privada a la que pDmaBufferPrivateData apunta a para la operación actual.

Operation

[in] Valor DXGK_BUILDPAGINGBUFFER_OPERATION con tipo que indica el tipo de operación de memoria que se va a realizar.

MultipassOffset

[in/out] Valor UINT que especifica el progreso de la operación de paginación si se requieren varios búferes de paginación. El controlador establece este valor para indicar una división en varios búferes de paginación para más de una operación de transferencia. Por ejemplo, el controlador puede almacenar el número de página que se transfirió por última vez para una transferencia basada en paginados.

Transfer

[in] Estructura que describe la operación de transferencia.

Transfer.hAllocation

[in] Identificador de la asignación que la función DxgkDdiCreateAllocation del controlador devolvió anteriormente en el miembro hAllocation de una estructura de DXGK_ALLOCATIONINFO, que forma parte del miembro pAllocationInfo de la estructura DXGKARG_CREATEALLOCATION. El identificador de asignación apunta a un búfer que contiene datos de controladores privados para la transferencia.

Transfer.TransferOffset

[in] Desplazamiento, en bytes, de la primera página dentro de la asignación que se transfiere. Este desplazamiento solo se aplica a una ubicación que describe una ubicación de segmento. Este desplazamiento no se aplica a una descripción MDL de un intervalo de memoria. Si el controlador requiere más de un búfer de paginación para completar la transferencia (es decir, el controlador devuelve STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER de su función DxgkDdiBuildPagingBuffer ), TransferOffset es el mismo para cada llamada a DxgkDdiBuildPagingBuffer para esta transferencia.

Transfer.TransferSize

[in] Tamaño, en bytes, de la información de memoria que se va a transferir.

Transfer.Source

[in] Estructura que describe la asignación de origen. Esta estructura contiene un miembro SegmentId y una unión que contiene un desplazamiento en un segmento de la asignación de origen (SegmentAddress) o un puntero a un MDL para el origen (pMdl).

Transfer.Source.SegmentId

[in] Identificador de un segmento dentro de la asignación de origen o cero si el miembro pMdl de la unión que contiene Source describe la asignación de origen.

Transfer.Source.SegmentAddress

[in] La dirección del segmento de origen, si el miembro SegmentId de Source es distinto de cero. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Source.pMdl

[in] Puntero a un búfer que contiene la estructura MDL que describe las páginas de memoria del sistema para el origen, si el miembro SegmentId de Source es cero.

Transfer.Destination

[in] Estructura que describe la asignación de destino. Esta estructura contiene un miembro SegmentId y una unión que contiene un desplazamiento en un segmento de la asignación de destino (SegmentAddress) o un puntero a un MDL para el destino (pMdl).

Transfer.Destination.SegmentId

[in] Identificador de un segmento dentro de la asignación de destino o cero si el miembro pMdl de la unión que contiene Destination describe la asignación de destino.

Transfer.Destination.SegmentAddress

[in] La dirección del segmento de destino, si el miembro SegmentId de Destination es distinto de cero. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

[in] Puntero a un búfer que contiene la estructura MDL que describe las páginas de memoria del sistema para el destino, si el miembro SegmentId de Destination es cero.

Transfer.Flags

[in] Estructura DXGK_TRANSFERFLAGS que identifica, en marcas de campo de bits, el tipo de operación especial de transferencia de bloqueo que se va a realizar.

Transfer.MdlOffset

[in] Desplazamiento, en páginas de memoria del sistema, dentro de la estructura MDL a la que apunta el miembro pMdl , a la primera página de memoria del sistema para la operación actual. El controlador puede obtener la dirección física de la primera página de memoria del sistema llamando a la función [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray de la siguiente manera.

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in] Estructura que describe la operación de relleno.

Fill.hAllocation

[in] Identificador de la asignación que contiene contenido que se va a rellenar.

Fill.FillSize

[in] Tamaño, en bytes, de la información de memoria que se va a rellenar.

Fill.FillPattern

[in] Patrón con el que rellenar el destino. El administrador de memoria de vídeo usa esta información para inicializar la memoria de vídeo en un patrón específico cuando una asignación sin contenido se pagina por primera vez. En este caso, no existe ningún origen para la solicitud de relleno; solo existe un destino.

Fill.Destination

[in] Estructura que describe la asignación de destino para la operación de relleno.

Fill.Destination.SegmentId

[in] Identificador de un segmento dentro de la asignación de destino.

Fill.Destination.SegmentAddress

[in] Dirección del segmento de destino. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

DiscardContent

[in] Estructura que describe la operación descarte-contenido.

DiscardContent.hAllocation

[in] Identificador de la asignación que contiene contenido que se va a descartar.

DiscardContent.Flags

[in] Estructura DXGK_DISCARDCONTENTFLAGS que identifica, en marcas de campo de bits, el tipo de operación de descarte-contenido que se va a realizar.

DiscardContent.SegmentId

[in] Identificador de un segmento dentro de la asignación del que se va a descartar el contenido.

DiscardContent.SegmentAddress

[in] Un PHYSICAL_ADDRESS tipo de datos (que se define como LARGE_INTEGER) que indica la dirección del segmento. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr. Esta ubicación es donde se descarta el contenido.

ReadPhysical

[in] Estructura que describe la operación de lectura física.

ReadPhysical.SegmentId

[in] Identificador de un segmento del que se leen los datos.

ReadPhysical.PhysicalAddress

[in] Un PHYSICAL_ADDRESS tipo de datos (que se define como LARGE_INTEGER) que indica la dirección física, dentro del segmento que especifica SegmentId , donde se leen los datos.

WritePhysical

[in] Estructura que describe la operación física de escritura.

WritePhysical.SegmentId

[in] Identificador de un segmento en el que se escriben los datos.

WritePhysical.PhysicalAddress

[in] Un PHYSICAL_ADDRESS tipo de datos (que se define como LARGE_INTEGER) que indica la dirección física, dentro del segmento que especifica SegmentId , donde se escriben los datos.

MapApertureSegment

[in] Estructura que describe la operación map-aperture-segment mediante MDL.

MapApertureSegment.hDevice

[in] Identificador del dispositivo que posee la asignación que hAllocation especifica que se asigna al segmento de apertura que especifica SegmentId .

Para una asignación compartida, hDevice se establece en el dispositivo que el administrador de memoria de vídeo determinó ser el propietario de la asignación.

hDevice es NULL para la asignación principal.

MapApertureSegment.hAllocation

[in] Identificador de la asignación que se asigna al segmento de apertura que especifica SegmentId .

hAllocation es NULL cuando se asigna un búfer DMA al segmento de apertura porque el controlador no crea explícitamente los búferes DMA.

MapApertureSegment.SegmentId

[in] Identificador de un segmento de apertura que se va a configurar.

MapApertureSegment.OffsetInPages

[in] Desplazamiento, en páginas, desde el principio del segmento hasta las primeras páginas que se van a asignar.

MapApertureSegment.NumberOfPages

[in] Número de páginas que se van a asignar.

MapApertureSegment.pMdl

[in] Puntero a un búfer que contiene la estructura MDL que describe las páginas de memoria del sistema físico que se van a asignar al segmento de apertura.

MapApertureSegment.Flags

[in] Estructura DXGK_MAPAPERTUREFLAGS que identifica, en marcas de campo de bits, el tipo de operación map-aperture-segment que se va a realizar.

MapApertureSegment.MdlOffset

[in] Desplazamiento, en páginas de memoria del sistema, dentro de la estructura MDL a la que apunta el miembro pMdl , a la primera página de memoria del sistema para la operación actual. El controlador puede obtener la dirección física de la primera página de memoria del sistema llamando a la función [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray de la siguiente manera.

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in] Estructura que describe la operación unmap-aperture-segment.

UnmapApertureSegment.hDevice

[in] Identificador del dispositivo que posee la asignación que hAllocation especifica que no está asignado del segmento de apertura que especifica SegmentId .

Para una asignación compartida, hDevice se establece en el dispositivo que el administrador de memoria de vídeo determinó ser el propietario de la asignación.

hDevice es NULL para la asignación principal.

UnmapApertureSegment.hAllocation

[in] Identificador de la asignación que no se asigna del segmento de apertura que especifica SegmentId .

hAllocation es NULL cuando un búfer DMA no está asignado desde el segmento de apertura porque el controlador no crea explícitamente los búferes DMA.

UnmapApertureSegment.SegmentId

[in] Identificador de un segmento de apertura que se va a configurar.

UnmapApertureSegment.OffsetInPages

[in] Desplazamiento, en páginas, desde el principio del segmento hasta las primeras páginas que se van a desasignación.

UnmapApertureSegment.NumberOfPages

[in] Número de páginas que se van a desasignación.

UnmapApertureSegment.DummyPage

[in] Un PHYSICAL_ADDRESS tipo de datos (que se define como LARGE_INTEGER) que indica la dirección física de la página de marcador de posición donde el controlador debe asignar el intervalo que no está asignado.

SpecialLockTransfer

[in] Estructura que describe la operación especial de transferencia de bloqueo.

SpecialLockTransfer.hAllocation

[in] Identificador de la asignación que la función DxgkDdiCreateAllocation del controlador devolvió anteriormente en el miembro hAllocation de una estructura de DXGK_ALLOCATIONINFO, que forma parte del miembro pAllocationInfo de la estructura DXGKARG_CREATEALLOCATION. El identificador de asignación apunta a un búfer que contiene datos del controlador privado para la transferencia de bloqueo especial.

SpecialLockTransfer.TransferOffset

[in] Desplazamiento, en bytes, de la primera página dentro de la asignación que se transfiere. Este desplazamiento solo se aplica a una ubicación que describe una ubicación de segmento. Este desplazamiento no se aplica a una descripción MDL de un intervalo de memoria. Si el controlador requiere más de un búfer de paginación para completar la transferencia (es decir, el controlador devuelve STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER de su función DxgkDdiBuildPagingBuffer ), TransferOffset es el mismo para cada llamada a DxgkDdiBuildPagingBuffer para esta transferencia.

SpecialLockTransfer.TransferSize

[in] Tamaño, en bytes, de la información de memoria que se va a transferir.

SpecialLockTransfer.Source

[in] Estructura que describe la asignación de origen. Esta estructura contiene un miembro SegmentId y una unión que contiene un desplazamiento en un segmento de la asignación de origen (SegmentAddress) o un puntero a un MDL para el origen (pMdl).

SpecialLockTransfer.Source.SegmentId

[in] Identificador de un segmento dentro de la asignación de origen o cero si el miembro pMdl de la unión que contiene Source describe la asignación de origen.

SpecialLockTransfer.Source. (unión sin nombre)

[in] Unión que contiene un desplazamiento en un segmento de la asignación de origen (SegmentAddress) o un puntero a un MDL para el origen (pMdl).

SpecialLockTransfer.Source.SegmentAddress

[in] La dirección del segmento de origen, si el miembro SegmentId de Source es distinto de cero. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Source.pMdl

[in] Puntero a un búfer que contiene la estructura MDL que describe las páginas de memoria del sistema para el origen, si el miembro SegmentId de Source es cero.

SpecialLockTransfer.Destination

[in] Estructura que describe la asignación de destino. Esta estructura contiene un miembro SegmentId y una unión que contiene un desplazamiento en un segmento de la asignación de destino (SegmentAddress) o un puntero a un MDL para el destino (pMdl).

SpecialLockTransfer.Destination.SegmentId

[in] Identificador de un segmento dentro de la asignación de destino o cero si el miembro pMdl de la unión que contiene Destination describe la asignación de destino.

SpecialLockTransfer.Destination. (unión sin nombre)

[in] Unión que contiene un desplazamiento en un segmento de la asignación de destino (SegmentAddress) o un puntero a un MDL para el destino (pMdl).

SpecialLockTransfer.Destination.SegmentAddress

[in] La dirección del segmento de destino, si el miembro SegmentId de Destination es distinto de cero. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

[in] Puntero a un búfer que contiene la estructura MDL que describe las páginas de memoria del sistema para el destino, si el miembro SegmentId de Destination es cero.

SpecialLockTransfer.Flags

[in] Estructura DXGK_TRANSFERFLAGS que identifica, en marcas de campo de bits, el tipo de operación especial de transferencia de bloqueo que se va a realizar.

SpecialLockTransfer.SwizzlingRangeId

[in] Valor UINT que identifica el intervalo de giro.

SpecialLockTransfer.SwizzlingRangeData

[in] Valor UINT que especifica los datos de intervalo destornado.

InitContextResource

[in] Estructura que describe la operación de inicialización del contexto. Se admite a partir de Windows 8.

InitContextResource.hAllocation

[in] Identificador de la asignación de contexto que se creó cuando el controlador llamó a DxgkCbCreateContextAllocation. El identificador de esta asignación se devuelve en el miembro hAllocation de la estructura DXGKARGCB_CREATECONTEXTALLOCATION . El controlador pasa un puntero a esta estructura en el parámetro ContextAllocation cuando llama a DxgkCbCreateContextAllocation.

InitContextResource.Destination

[in] Estructura que describe la asignación de contexto de destino. Esta estructura contiene un miembro SegmentId y una unión que contiene un desplazamiento en un segmento de la asignación de contexto de destino (SegmentAddress) o un puntero a un MDL para el destino (pMdl).

InitContextResource.Destination.SegmentId

[in] Identificador de un segmento dentro de la asignación de contexto de destino o cero si el miembro pMdl de la unión que contiene Destination describe la asignación de contexto de destino.

InitContextResource.Destination. (unión sin nombre)

[in] Unión que contiene un desplazamiento en un segmento de la asignación de contexto de destino (SegmentAddress) o un puntero a un MDL para el destino (pMdl).

InitContextResource.Destination.SegmentAddress

[in] La dirección del segmento de destino, si el miembro SegmentId de Destination es distinto de cero. El subsistema del kernel de gráficos de DirectX calcula la dirección del segmento como la suma del desplazamiento del segmento y la dirección base del segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

InitContextResource.Destination.pMdl

[in] Puntero a un búfer que contiene la estructura MDL que describe las páginas de memoria del sistema para el destino, si el miembro SegmentId de Destination es cero.

InitContextResource.Destination.VirtualAddress

[in] Dirección virtual de la asignación de contexto de destino. Esta dirección es válida durante la vigencia de la asignación de contexto.

Siga los procedimientos de la sección Direcciones virtuales para las asignaciones de contexto de destino" del tema DxgkCbCreateContextAllocation para asegurarse de que la dirección virtual es válida.

InitContextResource.Destination.GpuVirtualAddress

Dirección virtual de GPU del recurso de contexto que se va a inicializar.

TransferVirtual

Estructura DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL que describe la operación utilizada para transferir contenido de asignación entre ubicaciones en memoria.

FillVirtual

Estructura DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL que describe la operación utilizada para rellenar una asignación con un patrón.

UpdatePageTable

Estructura DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE que describe la operación utilizada para actualizar una tabla de páginas.

FlushTlb

Estructura DXGK_BUILDPAGINGBUFFER_FLUSHTLB que describe la operación utilizada para vaciar los búferes de búsqueda de traducción.

CopyPageTableEntries

Estructura de DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES que describe la operación usada para copiar entradas de tabla de páginas de una ubicación a otra.

UpdateContextAllocation

Estructura DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION que describe la operación utilizada para actualizar el contenido de un contexto o asignación de dispositivos.

NotifyResidency

Estructura DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY que describe una operación de cambio de asignación de residencia.

SignalMonitoredFence

[in] Estructura DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE que describe una instrucción de GPU para indicar el objeto de barrera supervisada de paginación al búfer DMA. Disponible a partir de Windows 10, versión 1703 (WDDM 2.2).

MapApertureSegment2

MapApertureSegment2.hDevice

[in] Identificador del dispositivo que posee la asignación que hAllocation especifica que se asigna al segmento de apertura que especifica SegmentId .

Para una asignación compartida, hDevice se establece en el dispositivo que el administrador de memoria de vídeo determinó ser el propietario de la asignación.

hDevice es NULL para la asignación principal.

MapApertureSegment2.hAllocation

[in] El controlador controla la asignación que se asigna al segmento de apertura que especifica SegmentId .

hAllocation es NULL cuando se asigna un búfer DMA al segmento de apertura porque el controlador no crea explícitamente los búferes DMA.

MapApertureSegment2.SegmentId

[in] Identificador de un segmento de apertura que se va a configurar.

MapApertureSegment2.OffsetInPages

[in] Desplazamiento, en páginas, desde el principio del segmento hasta las primeras páginas que se van a asignar.

MapApertureSegment2.NumberOfPages

[in] Tamaño del intervalo que se asigna dentro de la asignación, en páginas.

MapApertureSegment2.Adl

[in] Estructura de DXGK_ADL con la lista de descriptores de direcciones (ADL) que describe las asignaciones de direcciones lógicas (páginas) para la memoria de asignación. Este ADL puede ser contiguo o una matriz de páginas; El controlador debe ser capaz de controlar ambos casos.

MapApertureSegment2.Flags

[in] Estructura DXGK_MAPAPERTUREFLAGS que identifica, en marcas de campo de bits, el tipo de operación map-aperture-segment que se va a realizar.

MapApertureSegment2.AdlOffset

[in] Desplazamiento dentro del ADL al inicio del intervalo de direcciones lógicas que se asigna para la operación actual, especificada en páginas de memoria del sistema. Si el ADL es un ADL contiguo, el miembro BasePageNumber de ADL es la dirección inicial de un intervalo contiguo de memoria. De lo contrario, use el miembro Pages de ADL para la memoria no contigua.

MapApertureSegment2.CpuVisibleAddress

Si se creó la asignación de un controlador con el conjunto de marcas MapApertureCpuVisible , CpuVisibleAddress es un puntero no null a una dirección virtual asignada por el sistema y en modo kernel para DXGK_OPERATION_MAP_APERTURE_SEGMENT2 operaciones. Esta dirección es válida siempre que la asignación se asigne al segmento de apertura y se liberará inmediatamente después de la llamada de DXGK_OPERATION_UNMAP_APERTURE_SEGMENT correspondiente para la misma asignación.

Si no se especifica MapApertureCpuVisible , CpuVisibleAddress es NULL para las operaciones de DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .

Reserved

Este miembro está reservado y no debe usarse.

Reserved.Reserved[64]

Este miembro está reservado y no debe usarse.

hSystemContext

[in] Identificador del contexto del sistema para la operación de paginación.

DmaBufferGpuVirtualAddress

Un D3DGPU_VIRTUAL_ADDRESS tipo de datos que indica la dirección virtual en la que se pagina el búfer DMA. Si la dirección física es cero, el búfer DMA no se pagina correctamente.

DmaBufferWriteOffset

Desplazamiento de la operación actual en bytes desde el inicio del búfer DMA.

Comentarios

MDL se define en la documentación del modelo de controladores de Windows (WDM ).

Clase de sincronización WDDM:

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows Vista.
Encabezado d3dkmddi.h (incluye D3dkmddi.h)

Consulte también

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