Compartilhar via


estrutura DXGKARG_BUILDPAGINGBUFFER (d3dkmddi.h)

A estrutura DXGKARG_BUILDPAGINGBUFFER descreve parâmetros para o retorno de chamada DxgkDdiBuildPagingBuffer** que cria um buffer de paginação para uso em uma operação de transferência de memória.

Sintaxe

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;

Membros

pDmaBuffer

[entrada/saída] Um endereço virtual para o primeiro byte disponível no buffer de paginação. Quando o driver é chamado pela primeira vez com um novo buffer de paginação, esse endereço virtual é alinhado em 4 KB. O driver empacota firmemente as operações no buffer de paginação até que o buffer de paginação esteja cheio e use um novo buffer de paginação. Portanto, se a GPU (unidade de processamento gráfico) exigir um alinhamento específico para um envio de buffer de paginação, o driver deverá impor esse alinhamento preenchendo as operações que grava no buffer de paginação. Antes que a função DxgkDdiBuildPagingBuffer retorne, o driver deve atualizar pDmaBuffer para apontar para além do último byte gravado no buffer de paginação.

DmaSize

[entrada/saída] O tamanho, em bytes, do buffer de paginação especificado por pDmaBuffer .

pDmaBufferPrivateData

[entrada/saída] Um ponteiro para uma estrutura de dados privados residente no driver associada ao buffer de DMA (acesso direto à memória) (ou seja, buffer de paginação) especificado por pDmaBuffer .

DmaBufferPrivateDataSize

[entrada/saída] O número de bytes que permanecem na estrutura de dados privados para a qual pDmaBufferPrivateData aponta para a operação atual.

Operation

[in] Um valor de tipo DXGK_BUILDPAGINGBUFFER_OPERATION que indica o tipo de operação de memória a ser executada.

MultipassOffset

[entrada/saída] Um valor UINT que especifica o progresso da operação de paginação se vários buffers de paginação forem necessários. O driver define esse valor para indicar uma divisão em vários buffers de paginação para mais de uma operação de transferência. Por exemplo, o driver pode armazenar o número de página que foi transferido pela última vez para uma transferência baseada em paginação.

Transfer

[in] Uma estrutura que descreve a operação de transferência.

Transfer.hAllocation

[in] Um identificador para a alocação que a função DxgkDdiCreateAllocation do driver retornou anteriormente no membro hAllocation de uma estrutura DXGK_ALLOCATIONINFO, que faz parte do membro pAllocationInfo da estrutura DXGKARG_CREATEALLOCATION. O identificador de alocação aponta para um buffer que contém dados de driver privados para a transferência.

Transfer.TransferOffset

[in] O deslocamento, em bytes, da primeira página dentro da alocação que é transferida. Esse deslocamento é aplicado somente a um local que um local de segmento descreve. Esse deslocamento não se aplica a uma descrição MDL de um intervalo de memória. Se o driver exigir mais de um buffer de paginação para concluir a transferência (ou seja, o driver retornará STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER de sua função DxgkDdiBuildPagingBuffer ), TransferOffset será o mesmo para cada chamada para DxgkDdiBuildPagingBuffer para essa transferência.

Transfer.TransferSize

[in] O tamanho, em bytes, das informações de memória a serem transferidas.

Transfer.Source

[in] Uma estrutura que descreve a alocação de origem. Essa estrutura contém um membro SegmentId e uma união que contém um deslocamento em um segmento da alocação de origem (SegmentAddress) ou um ponteiro para um MDL para a origem (pMdl).

Transfer.Source.SegmentId

[in] O identificador de um segmento dentro da alocação de origem ou zero se a alocação de origem for descrita pelo membro pMdl da união que Source contém.

Transfer.Source.SegmentAddress

[in] O endereço do segmento de origem, se o membro SegmentId de Source for diferente de zero. O subsistema de kernel de elementos gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Source.pMdl

[in] Um ponteiro para um buffer que contém a estrutura MDL que descreve as páginas de memória do sistema para a origem, se o membro SegmentId de Source for zero.

Transfer.Destination

[in] Uma estrutura que descreve a alocação de destino. Essa estrutura contém um membro SegmentId e uma união que contém um deslocamento em um segmento da alocação de destino (SegmentAddress) ou um ponteiro para um MDL para o destino (pMdl).

Transfer.Destination.SegmentId

[in] O identificador de um segmento dentro da alocação de destino ou zero se a alocação de destino for descrita pelo membro pMdl da união que Destination contém.

Transfer.Destination.SegmentAddress

[in] O endereço do segmento de destino, se o membro SegmentId de Destination for diferente de zero. O subsistema de kernel de elementos gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

Transfer.Destination.pMdl

[in] Um ponteiro para um buffer que contém a estrutura MDL que descreve as páginas de memória do sistema para o destino, se o membro SegmentId de Destination for zero.

Transfer.Flags

[in] Uma estrutura DXGK_TRANSFERFLAGS que identifica, em sinalizadores de campo de bit, o tipo de operação de transferência de bloqueio especial a ser executada.

Transfer.MdlOffset

[in] O deslocamento, em páginas de memória do sistema, dentro da estrutura MDL para a qual o membro pMdl aponta, para a primeira página de memória do sistema para a operação atual. O driver pode obter o endereço físico da primeira página de memória do sistema chamando a função [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray da seguinte maneira.

MmGetMdlPfnArray(pMdl)[MdlOffset];

Fill

[in] Uma estrutura que descreve a operação de preenchimento.

Fill.hAllocation

[in] Um identificador para a alocação que contém o conteúdo a ser preenchido.

Fill.FillSize

[in] O tamanho, em bytes, das informações de memória a serem preenchidas.

Fill.FillPattern

[in] O padrão com o qual preencher o destino. O gerenciador de memória de vídeo usa essas informações para inicializar a memória de vídeo para um padrão específico quando uma alocação sem conteúdo é paginada pela primeira vez. Nesse caso, não existe nenhuma fonte para a solicitação de preenchimento— existe apenas um destino.

Fill.Destination

[in] Uma estrutura que descreve a alocação de destino para a operação de preenchimento.

Fill.Destination.SegmentId

[in] O identificador de um segmento dentro da alocação de destino.

Fill.Destination.SegmentAddress

[in] O endereço do segmento de destino. O subsistema de kernel de elementos gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

DiscardContent

[in] Uma estrutura que descreve a operação discard-content.

DiscardContent.hAllocation

[in] Um identificador para a alocação que contém conteúdo a ser descartado.

DiscardContent.Flags

[in] Uma estrutura DXGK_DISCARDCONTENTFLAGS que identifica, em sinalizadores de campo de bits, o tipo de operação discard-content a ser executada.

DiscardContent.SegmentId

[in] O identificador de um segmento dentro da alocação da qual descartar o conteúdo.

DiscardContent.SegmentAddress

[in] Um tipo de dados PHYSICAL_ADDRESS (que é definido como LARGE_INTEGER) que indica o endereço do segmento. O subsistema de kernel de elementos gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr. Esse local é o local do qual o conteúdo é descartado.

ReadPhysical

[in] Uma estrutura que descreve a operação de leitura física.

ReadPhysical.SegmentId

[in] O identificador de um segmento do qual os dados são lidos.

ReadPhysical.PhysicalAddress

[in] Um tipo de dados PHYSICAL_ADDRESS (que é definido como LARGE_INTEGER) que indica o endereço físico, dentro do segmento especificado por SegmentId , em que os dados são lidos.

WritePhysical

[in] Uma estrutura que descreve a operação write-physical.

WritePhysical.SegmentId

[in] O identificador de um segmento no qual os dados são gravados.

WritePhysical.PhysicalAddress

[in] Um tipo de dados PHYSICAL_ADDRESS (que é definido como LARGE_INTEGER) que indica o endereço físico, dentro do segmento que SegmentId especifica, em que os dados são gravados.

MapApertureSegment

[in] Uma estrutura que descreve a operação map-aperture-segment usando um MDL.

MapApertureSegment.hDevice

[in] Um identificador para o dispositivo que possui a alocação que hAllocation especifica que é mapeado para o segmento de abertura especificado por SegmentId .

Para uma alocação compartilhada, hDevice é definido como o dispositivo que o gerenciador de memória de vídeo determinou ser o proprietário da alocação.

hDevice é NULL para a alocação primária.

MapApertureSegment.hAllocation

[in] Um identificador para a alocação mapeada para o segmento de abertura especificado por SegmentId .

hAllocation é NULL quando um buffer de DMA é mapeado para o segmento de abertura porque os buffers de DMA não são criados explicitamente pelo driver.

MapApertureSegment.SegmentId

[in] O identificador de um segmento de abertura a ser configurado.

MapApertureSegment.OffsetInPages

[in] O deslocamento, em páginas, desde o início do segmento até as primeiras páginas a serem mapeadas.

MapApertureSegment.NumberOfPages

[in] O número de páginas a serem mapeadas.

MapApertureSegment.pMdl

[in] Um ponteiro para um buffer que contém a estrutura MDL que descreve as páginas de memória do sistema físico a serem mapeadas para o segmento de abertura.

MapApertureSegment.Flags

[in] Uma estrutura DXGK_MAPAPERTUREFLAGS que identifica, em sinalizadores de campo de bit, o tipo de operação map-aperture-segment a ser executada.

MapApertureSegment.MdlOffset

[in] O deslocamento, em páginas de memória do sistema, dentro da estrutura MDL para a qual o membro pMdl aponta, para a primeira página de memória do sistema para a operação atual. O driver pode obter o endereço físico da primeira página de memória do sistema chamando a função [MmGetMdlPfnArray](/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray da seguinte maneira.

MmGetMdlPfnArray(pMdl)[MdlOffset];

UnmapApertureSegment

[in] Uma estrutura que descreve a operação unmap-aperture-segment.

UnmapApertureSegment.hDevice

[in] Um identificador para o dispositivo que possui a alocação que hAllocation especifica que é não mapeado do segmento de abertura especificado por SegmentId .

Para uma alocação compartilhada, hDevice é definido como o dispositivo que o gerenciador de memória de vídeo determinou ser o proprietário da alocação.

hDevice é NULL para a alocação primária.

UnmapApertureSegment.hAllocation

[in] Um identificador para a alocação que não é mapeada do segmento de abertura especificado por SegmentId .

hAllocation é NULL quando um buffer de DMA é não mapeado do segmento de abertura porque os buffers de DMA não são criados explicitamente pelo driver.

UnmapApertureSegment.SegmentId

[in] O identificador de um segmento de abertura a ser configurado.

UnmapApertureSegment.OffsetInPages

[in] O deslocamento, em páginas, do início do segmento até as primeiras páginas para desmapear.

UnmapApertureSegment.NumberOfPages

[in] O número de páginas a serem desmapeada.

UnmapApertureSegment.DummyPage

[in] Um tipo de dados PHYSICAL_ADDRESS (que é definido como LARGE_INTEGER) que indica o endereço físico da página de espaço reservado em que o driver deve mapear o intervalo não mapeado.

SpecialLockTransfer

[in] Uma estrutura que descreve a operação de transferência de bloqueio especial.

SpecialLockTransfer.hAllocation

[in] Um identificador para a alocação que a função DxgkDdiCreateAllocation do driver retornou anteriormente no membro hAllocation de uma estrutura DXGK_ALLOCATIONINFO, que faz parte do membro pAllocationInfo da estrutura DXGKARG_CREATEALLOCATION. O identificador de alocação aponta para um buffer que contém dados de driver privados para a transferência de bloqueio especial.

SpecialLockTransfer.TransferOffset

[in] O deslocamento, em bytes, da primeira página dentro da alocação que é transferida. Esse deslocamento é aplicado somente a um local que um local de segmento descreve. Esse deslocamento não se aplica a uma descrição MDL de um intervalo de memória. Se o driver exigir mais de um buffer de paginação para concluir a transferência (ou seja, o driver retornará STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER de sua função DxgkDdiBuildPagingBuffer ), TransferOffset será o mesmo para cada chamada para DxgkDdiBuildPagingBuffer para essa transferência.

SpecialLockTransfer.TransferSize

[in] O tamanho, em bytes, das informações de memória a serem transferidas.

SpecialLockTransfer.Source

[in] Uma estrutura que descreve a alocação de origem. Essa estrutura contém um membro SegmentId e uma união que contém um deslocamento em um segmento da alocação de origem (SegmentAddress) ou um ponteiro para um MDL para a origem (pMdl).

SpecialLockTransfer.Source.SegmentId

[in] O identificador de um segmento dentro da alocação de origem ou zero se a alocação de origem for descrita pelo membro pMdl da união que Source contém.

SpecialLockTransfer.Source. (união sem nome)

[in] Uma união que contém um deslocamento para um segmento da alocação de origem (SegmentAddress) ou um ponteiro para um MDL para a origem (pMdl).

SpecialLockTransfer.Source.SegmentAddress

[in] O endereço do segmento de origem, se o membro SegmentId de Source for diferente de zero. O subsistema de kernel de gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Source.pMdl

[in] Um ponteiro para um buffer que contém a estrutura MDL que descreve as páginas de memória do sistema para a origem, se o membro SegmentId de Source for zero.

SpecialLockTransfer.Destination

[in] Uma estrutura que descreve a alocação de destino. Essa estrutura contém um membro SegmentId e uma união que contém um deslocamento para um segmento da alocação de destino (SegmentAddress) ou um ponteiro para um MDL para o destino (pMdl).

SpecialLockTransfer.Destination.SegmentId

[in] O identificador de um segmento dentro da alocação de destino ou zero se a alocação de destino for descrita pelo membro pMdl da união que Destination contém.

SpecialLockTransfer.Destination. (união sem nome)

[in] Uma união que contém um deslocamento para um segmento da alocação de destino (SegmentAddress) ou um ponteiro para um MDL para o destino (pMdl).

SpecialLockTransfer.Destination.SegmentAddress

[in] O endereço do segmento de destino, se o membro SegmentId de Destination for diferente de zero. O subsistema de kernel de gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

SpecialLockTransfer.Destination.pMdl

[in] Um ponteiro para um buffer que contém a estrutura MDL que descreve as páginas de memória do sistema para o destino, se o membro SegmentId de Destination for zero.

SpecialLockTransfer.Flags

[in] Uma estrutura DXGK_TRANSFERFLAGS que identifica, em sinalizadores de campo de bit, o tipo de operação de transferência de bloqueio especial a ser executada.

SpecialLockTransfer.SwizzlingRangeId

[in] Um valor UINT que identifica o intervalo de swizzling.

SpecialLockTransfer.SwizzlingRangeData

[in] Um valor UINT que especifica dados de intervalo de giro.

InitContextResource

[in] Uma estrutura que descreve a operação de inicialização de contexto. Com suporte a partir de Windows 8.

InitContextResource.hAllocation

[in] Um identificador para a alocação de contexto que foi criada quando o driver chamou DxgkCbCreateContextAllocation. O identificador para essa alocação é retornado no membro hAllocation da estrutura DXGKARGCB_CREATECONTEXTALLOCATION . O driver passa um ponteiro para essa estrutura no parâmetro ContextAllocation quando chama DxgkCbCreateContextAllocation.

InitContextResource.Destination

[in] Uma estrutura que descreve a alocação de contexto de destino. Essa estrutura contém um membro SegmentId e uma união que contém um deslocamento para um segmento da alocação de contexto de destino (SegmentAddress) ou um ponteiro para um MDL para o destino (pMdl).

InitContextResource.Destination.SegmentId

[in] O identificador de um segmento dentro da alocação de contexto de destino ou zero se a alocação de contexto de destino for descrita pelo membro pMdl da união que Destination contém.

InitContextResource.Destination. (união sem nome)

[in] Uma união que contém um deslocamento para um segmento da alocação de contexto de destino (SegmentAddress) ou um ponteiro para um MDL para o destino (pMdl).

InitContextResource.Destination.SegmentAddress

[in] O endereço do segmento de destino, se o membro SegmentId de Destination for diferente de zero. O subsistema de kernel de gráficos DirectX calcula o endereço do segmento como a soma do deslocamento do segmento e o endereço base do segmento: SegmentAddress = SegmentOffset + Segment.BaseAddr.

InitContextResource.Destination.pMdl

[in] Um ponteiro para um buffer que contém a estrutura MDL que descreve as páginas de memória do sistema para o destino, se o membro SegmentId de Destination for zero.

InitContextResource.Destination.VirtualAddress

[in] O endereço virtual da alocação de contexto de destino. Esse endereço é válido durante o tempo de vida da alocação de contexto.

Siga os procedimentos na seção Endereços virtuais para alocações de contexto de destino" do tópico DxgkCbCreateContextAllocation para garantir que o endereço virtual seja válido.

InitContextResource.Destination.GpuVirtualAddress

Endereço virtual de GPU do recurso de contexto a ser inicializado.

TransferVirtual

Uma estrutura DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL que descreve a operação usada para transferir o conteúdo de alocação entre locais na memória.

FillVirtual

Uma estrutura DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL que descreve a operação usada para preencher uma alocação com um padrão.

UpdatePageTable

Uma estrutura DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE que descreve a operação usada para atualizar uma tabela de página.

FlushTlb

Uma estrutura DXGK_BUILDPAGINGBUFFER_FLUSHTLB que descreve a operação usada para liberar os buffers de look-aside de tradução.

CopyPageTableEntries

Uma estrutura DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES que descreve a operação usou entradas de tabela de página de cópia de um local para outro.

UpdateContextAllocation

Uma estrutura DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION que descreve a operação usada para atualizar o conteúdo de um contexto ou alocação de dispositivo.

NotifyResidency

Uma estrutura DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY que descreve uma operação de alteração de alocação de residência.

SignalMonitoredFence

[in] Uma estrutura DXGK_BUILDPAGINGBUFFER_SIGNALMONITOREDFENCE que descreve uma instrução de GPU para sinalizar o objeto de cerca monitorado de paginação para o buffer de DMA. Disponível a partir do Windows 10, versão 1703 (WDDM 2.2).

MapApertureSegment2

MapApertureSegment2.hDevice

[in] Um identificador para o dispositivo que possui a alocação que hAllocation especifica que é mapeada para o segmento de abertura especificado por SegmentId .

Para uma alocação compartilhada, hDevice é definido como o dispositivo que o gerenciador de memória de vídeo determinou ser o proprietário da alocação.

hDevice é NULL para a alocação primária.

MapApertureSegment2.hAllocation

[in] O identificador de driver para a alocação mapeada para o segmento de abertura especificado por SegmentId .

hAllocation é NULL quando um buffer de DMA é mapeado para o segmento de abertura porque os buffers de DMA não são criados explicitamente pelo driver.

MapApertureSegment2.SegmentId

[in] O identificador de um segmento de abertura a ser configurado.

MapApertureSegment2.OffsetInPages

[in] O deslocamento, em páginas, desde o início do segmento até as primeiras páginas a serem mapeadas.

MapApertureSegment2.NumberOfPages

[in] O tamanho do intervalo que está sendo mapeado dentro da alocação, em páginas.

MapApertureSegment2.Adl

[in] Uma estrutura DXGK_ADL com a ADL (lista de descritores de endereço) que descreve os mapeamentos de endereço lógico (páginas) para a memória de alocação. Esse ADL pode ser contíguo ou uma matriz de páginas; o driver deve ser capaz de lidar com ambos os casos.

MapApertureSegment2.Flags

[in] Uma estrutura DXGK_MAPAPERTUREFLAGS que identifica, em sinalizadores de campo de bit, o tipo de operação map-aperture-segment a ser executada.

MapApertureSegment2.AdlOffset

[in] O deslocamento dentro do ADL para o início do intervalo de endereços lógicos que estão sendo mapeados para a operação atual, especificado nas páginas de memória do sistema. Se o ADL for um ADL contíguo, o membro BasePageNumber do ADL será o endereço inicial de um intervalo contíguo de memória. Caso contrário, use o membro Pages do ADL para memória não contígua.

MapApertureSegment2.CpuVisibleAddress

Se a alocação de um driver tiver sido criada com o sinalizador MapApertureCpuVisible definido, CpuVisibleAddress será um ponteiro não nulo para um endereço virtual do modo kernel mapeado pelo sistema para operações de DXGK_OPERATION_MAP_APERTURE_SEGMENT2 . Esse endereço é válido desde que a alocação seja mapeada para o segmento de abertura e será liberada imediatamente após a chamada DXGK_OPERATION_UNMAP_APERTURE_SEGMENT correspondente para a mesma alocação.

Se MapApertureCpuVisible não for especificado, CpuVisibleAddress será NULL para operações de DXGK_OPERATION_MAP_APERTURE_SEGMENT2 .

NotifyFenceResidency

MmapMmu

UnmapMmu

NotifyResidency2

NotifyAllocation

Reserved

Esse membro é reservado e não deve ser usado.

Reserved.Reserved[64]

Esse membro é reservado e não deve ser usado.

hSystemContext

[in] Um identificador para o contexto do sistema para a operação de paginação.

DmaBufferGpuVirtualAddress

Um tipo de dados D3DGPU_VIRTUAL_ADDRESS que indica o endereço virtual no qual o buffer de DMA foi paginado. Se o endereço físico for zero, o buffer de DMA não será paginado corretamente.

DmaBufferWriteOffset

O deslocamento da operação atual em bytes desde o início do buffer de DMA.

Comentários

O MDL é definido na documentação do WDM (Modelo de Driver do Windows ).

Classe de sincronização WDDM:

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte a partir do Windows Vista.
Cabeçalho d3dkmddi.h (inclua D3dkmddi.h)

Confira também

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