Funzione UMDEtwLogUnmapAllocation (umdprovider.h)

Indica che l'allocazione di memoria di un sottosistema kernel grafico DirectX (Dxgkrnl.sys) o una parte dell'allocazione non viene più utilizzata. Chiamare questa funzione indipendentemente dal fatto che l'allocazione venga eliminata definitivamente.

Sintassi

void UMDEtwLogUnmapAllocation(
  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 internamente le allocazioni.

hDxgAllocation

Handle per l'allocazione del sottosistema del kernel grafico DirectX (Dxgkrnl.sys) a cui è mappata l'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 per.

Valore restituito

nessuno

Osservazioni

Quando viene chiamato, questa funzione registra un evento che descrive la risorsa API per cui è o è stata usata l'allocazione. Se nessuna risorsa API è stata associata all'allocazione, la funzione registra un evento che descrive lo scopo indicato dal driver per questa allocazione.

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

Il driver deve passare gli stessi valori dei parametri a UMDEtwLogUnmapAllocation come è stato fatto a UMDEtwLogMapAllocation.

UMDEtwLogUnmapAllocation è definito inline in Umdprovider.h come segue:

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);
}

Requisiti

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

Vedi anche

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE

UMDEtwLogMapAllocation