Compartilhar via


Função UMDEtwLogUnmapAllocation (umdprovider.h)

Indica que uma alocação de memória de subsistema de kernel de elementos gráficos do Microsoft DirectX (Dxgkrnl.sys) ou uma parte da alocação não está mais sendo usada. Chame essa função se a alocação está ou não sendo destruída.

Sintaxe

void UMDEtwLogUnmapAllocation(
  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 ele usar alocações internamente.

hDxgAllocation

Um identificador para a alocação do subsistema de kernel de elementos gráficos do DirectX (Dxgkrnl.sys) 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

Quando chamada, essa função registra um evento que descreve para qual recurso de API a alocação está ou estava sendo usada. Se nenhum recurso de API tiver sido associado à alocação, a função registrará um evento que descreve a finalidade que o driver indicou para essa alocação.

O driver de exibição do modo de usuário deve considerar 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.

O driver deve passar os mesmos valores de parâmetros para UMDEtwLogUnmapAllocation como fez com UMDEtwLogMapAllocation.

UMDEtwLogUnmapAllocation é definido embutido em Umdprovider.h como:

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 UMDEtwLogUnmapAllocation(ULONGLONG hD3DAllocation,
                              ULONGLONG hDxgAllocation,
                              ULONGLONG Offset,
                              ULONGLONG Size,
                              UMDETW_ALLOCATION_USAGE Usage,
                              UMDETW_ALLOCATION_SEMANTIC Semantic)
{
    LogMapAllocation(FALSE,
                     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)

Confira também

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE

UMDEtwLogMapAllocation