Funzione UMDEtwLogMapAllocation (umdprovider.h)

Descrive in che modo viene usato un sottosistema del kernel grafico Microsoft DirectX (Dxgkrnl.sys) o una parte dell'allocazione.

Sintassi

void UMDEtwLogMapAllocation(
  ULONGLONG                  hD3DAllocation,
  ULONGLONG                  hDxgAllocation,
  ULONGLONG                  Offset,
  ULONGLONG                  Size,
  UMDETW_ALLOCATION_USAGE    Usage,
  UMDETW_ALLOCATION_SEMANTIC Semantic
);

Parametri

hD3DAllocation

Handle per l'allocazione Direct3D.

Per i driver in modalità utente Direct3D 10, l'handle sarà il valore del parametro hResource della funzione CreateResource(D3D10). Per i driver in modalità utente Direct3D 9, l'handle sarà il valore del parametro pResource restituito dal driver nella funzione CreateResource .

Il driver può impostare questo valore su NULL se usa le allocazioni internamente.

hDxgAllocation

Handle per l'allocazione del kernel grafico DirectX (Dxgkrnl.sys) a cui viene eseguito il mapping dell'allocazione Direct3D.

Offset

Indirizzo iniziale, in byte, dell'allocazione Direct3D all'interno dell'allocazione Dxgkrnl.

Size

Dimensioni, in byte, dell'allocazione Direct3D all'interno dell'allocazione Dxgkrnl.

Usage

Struttura UMDETW_ALLOCATION_USAGE che indica il motivo di questo mapping.

Semantic

Se l'allocazione viene usata internamente dal driver in modalità utente, si tratta di una struttura UMDETW_ALLOCATION_SEMANTIC che indica l'allocazione utilizzata.

Valore restituito

nessuno

Osservazioni

Il driver di visualizzazione in modalità utente deve tenere conto completamente della memoria video allocata, quindi deve chiamare questa funzione per registrare un evento ogni volta che l'allocazione cambia.

Esempi di quando chiamare questa funzione sono:

  • Un'allocazione Direct3D viene inserita in un sottosistema del kernel grafico DirectX (Dxgkrnl.sys).
  • Un'allocazione Dxgkrnl viene creata come superficie di graffio. In questo caso, impostare il parametro hD3DAllocation su NULL.
UMDEtwLogMapAllocation è definito inline in Umdprovider.h come:
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);
}

Requisiti

Requisito Valore
Client minimo supportato Windows 8
Server minimo supportato Windows Server 2012
Piattaforma di destinazione Desktop
Intestazione umdprovider.h (includere Umdprovider.h)

Vedi anche

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE