Partager via


Fonction UMDEtwLogMapAllocation (umdprovider.h)

Décrit comment une allocation de mémoire du sous-système de noyau graphique (Dxgkrnl.sys) Microsoft DirectX, ou une partie de l’allocation, est utilisée.

Syntaxe

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

Paramètres

hD3DAllocation

Handle de l’allocation Direct3D.

Pour les pilotes en mode utilisateur Direct3D 10, le handle est la valeur du paramètre hResource de la fonction CreateResource(D3D10). Pour les pilotes en mode utilisateur Direct3D 9, le handle est la valeur du paramètre pResource que le pilote retourne dans la fonction CreateResource .

Le pilote peut définir cette valeur sur NULL s’il utilise des allocations en interne.

hDxgAllocation

Handle de l’allocation du sous-système de noyau graphique DirectX (Dxgkrnl.sys) à laquelle l’allocation Direct3D est mappée.

Offset

Adresse de départ, en octets, de l’allocation Direct3D au sein de l’allocation Dxgkrnl.

Size

Taille, en octets, de l’allocation Direct3D dans l’allocation Dxgkrnl.

Usage

Structure UMDETW_ALLOCATION_USAGE qui indique la raison de ce mappage.

Semantic

Si l’allocation est utilisée en interne par le pilote en mode utilisateur, il s’agit d’une structure UMDETW_ALLOCATION_SEMANTIC qui indique à quoi sert l’allocation.

Valeur de retour

None

Remarques

Le pilote d’affichage en mode utilisateur doit tenir entièrement compte de la mémoire vidéo qu’il alloue. Il doit donc appeler cette fonction pour journaliser un événement chaque fois que l’allocation change.

Voici quelques exemples de quand appeler cette fonction :

  • Une allocation Direct3D est empaquetée dans une allocation de sous-système de noyau graphique (Dxgkrnl.sys) DirectX.
  • Une allocation Dxgkrnl est créée en tant que surface de travail. Dans ce cas, définissez le paramètre hD3DAllocation sur NULL.
UMDEtwLogMapAllocation est défini inline dans Umdprovider.h comme suit :
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);
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
Plateforme cible Desktop (Expérience utilisateur)
En-tête umdprovider.h (inclure Umdprovider.h)

Voir aussi

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE