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
DXGK_BUILDPAGINGBUFFER_COPYPAGETABLEENTRIES
DXGK_BUILDPAGINGBUFFER_FILLVIRTUAL
DXGK_BUILDPAGINGBUFFER_FLUSHTLB
DXGK_BUILDPAGINGBUFFER_NOTIFYRESIDENCY
DXGK_BUILDPAGINGBUFFER_TRANSFERVIRTUAL
DXGK_BUILDPAGINGBUFFER_UPDATECONTEXTALLOCATION
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE
[MmGetMdlPfnArray] (/windows-hardware/drivers/kernel/mm-bad-pointer#mmgetmdlpfnarray