Função UMDEtwLogMapAllocation (umdprovider.h)
Descreve como uma alocação de memória de subsistema de kernel de elementos gráficos (Dxgkrnl.sys) do Microsoft DirectX ou uma parte da alocação está sendo usada.
Sintaxe
void UMDEtwLogMapAllocation(
ULONGLONG hD3DAllocation,
ULONGLONG hDxgAllocation,
ULONGLONG Offset,
ULONGLONG Size,
UMDETW_ALLOCATION_USAGE Usage,
UMDETW_ALLOCATION_SEMANTIC Semantic
);
Parâmetros
hD3DAllocation
Um identificador para a alocação do Direct3D.
Para drivers de modo de usuário do Direct3D 10, o identificador será o valor do parâmetro hResource da função CreateResource(D3D10). Para drivers de modo de usuário do Direct3D 9, o identificador será o valor do parâmetro pResource que o driver retorna na função CreateResource .
O driver poderá definir esse valor como NULL se usar alocações internamente.
hDxgAllocation
Um identificador para a alocação do subsistema de kernel de elementos gráficos (Dxgkrnl.sys) do DirectX para o qual a alocação do Direct3D é mapeada.
Offset
O endereço inicial, em bytes, da alocação direct3D dentro da alocação Dxgkrnl.
Size
O tamanho, em bytes, da alocação direct3D dentro da alocação Dxgkrnl.
Usage
Uma estrutura UMDETW_ALLOCATION_USAGE que indica o motivo desse mapeamento.
Semantic
Se a alocação for usada internamente pelo driver de modo de usuário, essa será uma estrutura UMDETW_ALLOCATION_SEMANTIC que indica para que a alocação é usada.
Retornar valor
Nenhum
Comentários
O driver de exibição do modo de usuário deve levar em conta completamente a memória de vídeo alocada, portanto, ele deve chamar essa função para registrar um evento sempre que a alocação for alterada.
Exemplos de quando chamar essa função são:
- Uma alocação direct3D é empacotada em uma alocação de subsistema de kernel de elementos gráficos (Dxgkrnl.sys) directx.
- Uma alocação Dxgkrnl é criada como uma superfície de rascunho. Nesse caso, defina o parâmetro hD3DAllocation como NULL.
FORCEINLINE void LogMapAllocation(BOOLEAN Enter,
ULONGLONG hD3DAllocation,
ULONGLONG hDxgAllocation,
ULONGLONG Offset,
ULONGLONG Size,
UMDETW_ALLOCATION_USAGE Usage,
UMDETW_ALLOCATION_SEMANTIC Semantic)
{
if (Enabled)
{
EVENT_DATA_DESCRIPTOR Descriptors[6];
// Create a description of the event
EventDataDescCreate(&Descriptors[0], &hD3DAllocation, 8);
EventDataDescCreate(&Descriptors[1], &hDxgAllocation, 8);
EventDataDescCreate(&Descriptors[2], &Offset, 8);
EventDataDescCreate(&Descriptors[3], &Size, 8);
EventDataDescCreate(&Descriptors[4], &Usage, 4);
EventDataDescCreate(&Descriptors[5], &Semantic, 4);
// Log the event
EventWrite(
RegHandle,
Enter ? (InRundown ? &RundownAllocationEvent : &MapAllocationEvent) : &UnmapAllocationEvent,
sizeof(Descriptors) / sizeof(Descriptors[0]),
Descriptors
);
}
}
FORCEINLINE void UMDEtwLogMapAllocation(ULONGLONG hD3DAllocation,
ULONGLONG hDxgAllocation,
ULONGLONG Offset,
ULONGLONG Size,
UMDETW_ALLOCATION_USAGE Usage,
UMDETW_ALLOCATION_SEMANTIC Semantic)
{
LogMapAllocation(TRUE,
hD3DAllocation,
hDxgAllocation,
Offset,
Size,
Usage,
Semantic);
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Servidor mínimo com suporte | Windows Server 2012 |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | umdprovider.h (inclua Umdprovider.h) |